Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
projets:le_miracle_dans_le_magasin:accueil [2018/02/19 14:56] jerzon [le miracle dans le magasin] |
projets:le_miracle_dans_le_magasin:accueil [2018/02/20 17:31] jerzon [Final code miracle] |
||
---|---|---|---|
Ligne 14: | Ligne 14: | ||
{{projets: | {{projets: | ||
- | 1 ARDUINO NANO 3.0 | ||
- | 1 UART Série mp3 LECTEUR MODULE BORD 3W OPEN-SMART | ||
- | 1 CARTE MICRO SD | ||
- | 1 HC-05 BLUETOOTH | ||
- | 2 Batteries 3,7 V 720 mAh 25C V931 F949 | ||
- | 1 ULN | ||
- | 1 MOTEUR RS445PA14233R | ||
- | 1 ENCEINTE | ||
- | 1 CÂBLE mini JACK/ mini JACK | ||
- | 1 BREADBOARD | ||
- | | ||
+ | ===== Matériel ===== | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | {{: | ||
+ | </ | ||
- | {{: | + | <WRAP half column> |
- | Guide pas à pas pour la réalisation du projet. | + | * 1 ARDUINO NANO 3.0 |
+ | * 1 UART Série mp3 LECTEUR MODULE BORD 3W OPEN-SMART | ||
+ | * 1 CARTE MICRO SD | ||
+ | * 1 HC-05 BLUETOOTH | ||
+ | * 2 Batteries 3,7 V 720 mAh 25C V931 F949 | ||
+ | * 1 ULN | ||
+ | * 1 MOTEUR RS445PA14233R | ||
+ | * 1 ENCEINTE | ||
+ | * 1 CÂBLE mini JACK/ mini JACK | ||
+ | * 1 BREADBOARD | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Codes Arduino ===== | ||
+ | ==== Tests ==== | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | |||
+ | ==== Final code " | ||
+ | * {{ : | ||
+ | |||
+ | |||
+ | <code cpp> | ||
+ | // Projet Miracle - Jérôme Kdiajanian | ||
+ | // Code Jerome l' | ||
+ | // 29/01/2018 | ||
+ | // Android ( " | ||
+ | |||
+ | // From Open-Smart Demo for Serial MP3 Player A module | ||
+ | // Store: http:// | ||
+ | |||
+ | /* Wiring Guide */ | ||
+ | //Serial MP3 Player A | ||
+ | // RX | ||
+ | // TX | ||
+ | // VCC | 5V | ||
+ | // GND | GND | ||
+ | // Bluetooth HC-05 | | ||
+ | // TX | 11 | ||
+ | // RX | 10 | ||
+ | // Driver ULN2005 | ||
+ | |||
+ | #include < | ||
+ | |||
+ | // MP3 pins | ||
+ | #define ARDUINO_RX 8 //should connect to TX of the Serial MP3 Player module | ||
+ | #define ARDUINO_TX 7 //connect to RX of the module | ||
+ | SoftwareSerial myMP3(ARDUINO_RX, | ||
+ | |||
+ | // HC-05 pins | ||
+ | #define rxPin 11 // Broche 11 Arduino en tant que RX --- TX du HC-05 | ||
+ | #define txPin 10 // Broche 10 Arduino en tant que TX --- RX du HC-05 | ||
+ | SoftwareSerial BTserial(rxPin, | ||
+ | |||
+ | // ULN 2003 (dc motor) pin | ||
+ | int motorpin = 5; | ||
+ | |||
+ | // Command Strings to " | ||
+ | String state; | ||
+ | String A = " | ||
+ | String B = " | ||
+ | |||
+ | static int8_t Send_buf[6] = {0} ; | ||
+ | / | ||
+ | /*basic commands*/ | ||
+ | #define CMD_PLAY | ||
+ | #define CMD_PAUSE 0X02 | ||
+ | #define CMD_NEXT_SONG 0X03 | ||
+ | #define CMD_PREV_SONG 0X04 | ||
+ | #define CMD_VOLUME_UP | ||
+ | #define CMD_VOLUME_DOWN 0X06 | ||
+ | #define CMD_FORWARD 0X0A // >> | ||
+ | #define CMD_REWIND | ||
+ | #define CMD_STOP 0X0E | ||
+ | #define CMD_STOP_INJECT 0X0F//stop interruptting with a song, just stop the interlude | ||
+ | |||
+ | /*5 bytes commands*/ | ||
+ | #define CMD_SEL_DEV 0X35 | ||
+ | #define DEV_TF 0X01 | ||
+ | #define CMD_IC_MODE 0X35 | ||
+ | #define CMD_SLEEP | ||
+ | #define CMD_WAKE_UP 0X02 | ||
+ | #define CMD_RESET | ||
+ | |||
+ | /*6 bytes commands*/ | ||
+ | #define CMD_PLAY_W_INDEX | ||
+ | #define CMD_PLAY_FILE_NAME 0X42 | ||
+ | #define CMD_INJECT_W_INDEX 0X43 | ||
+ | |||
+ | /*Special commands*/ | ||
+ | #define CMD_SET_VOLUME 0X31 | ||
+ | #define CMD_PLAY_W_VOL 0X31 | ||
+ | #define CMD_SET_PLAY_MODE 0X33 | ||
+ | #define ALL_CYCLE 0X00 | ||
+ | #define SINGLE_CYCLE 0X01 | ||
+ | #define CMD_PLAY_COMBINE 0X45//can play combination up to 15 songs | ||
+ | |||
+ | void sendCommand(int8_t command, int16_t dat ); | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | myMP3.begin(9600); | ||
+ | delay(500);// | ||
+ | |||
+ | // HC05 | ||
+ | pinMode(rxPin, | ||
+ | pinMode(txPin, | ||
+ | BTserial.begin(38400); | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | | ||
+ | state = BTserial.read(); | ||
+ | if(state == B) { | ||
+ | playWithVolume(0XFF01); | ||
+ | accel_motor(); | ||
+ | delay(1000); | ||
+ | } | ||
+ | else if(state == A) { | ||
+ | // nothing | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void setVolume(int8_t vol) | ||
+ | { | ||
+ | mp3_5bytes(CMD_SET_VOLUME, | ||
+ | } | ||
+ | void playWithVolume(int16_t dat) | ||
+ | { | ||
+ | mp3_6bytes(CMD_PLAY_W_VOL, | ||
+ | } | ||
+ | |||
+ | /*cycle play with an index*/ | ||
+ | void cyclePlay(int16_t index) | ||
+ | { | ||
+ | mp3_6bytes(CMD_SET_PLAY_MODE, | ||
+ | } | ||
+ | |||
+ | void setCyleMode(int8_t AllSingle) | ||
+ | { | ||
+ | mp3_5bytes(CMD_SET_PLAY_MODE, | ||
+ | } | ||
+ | |||
+ | void playCombine(int8_t song[][2], int8_t number) | ||
+ | { | ||
+ | if(number > 15) return;// | ||
+ | uint8_t nbytes;// | ||
+ | nbytes = 2*number + 4; | ||
+ | int8_t Send_buf[nbytes]; | ||
+ | Send_buf[0] = 0x7e; //starting byte | ||
+ | Send_buf[1] = nbytes - 2; //the number of bytes of the command without starting byte and ending byte | ||
+ | Send_buf[2] = CMD_PLAY_COMBINE; | ||
+ | for(uint8_t i=0; i < number; i++)// | ||
+ | { | ||
+ | Send_buf[i*2+3] = song[i][0]; | ||
+ | Send_buf[i*2+4] = song[i][1]; | ||
+ | } | ||
+ | Send_buf[nbytes - 1] = 0xef; | ||
+ | sendBytes(nbytes); | ||
+ | } | ||
+ | |||
+ | void sendCommand(int8_t command, int16_t dat = 0) | ||
+ | { | ||
+ | delay(20); | ||
+ | if((command == CMD_PLAY_W_VOL)||(command == CMD_SET_PLAY_MODE)||(command == CMD_PLAY_COMBINE)) | ||
+ | return; | ||
+ | else if(command < 0x10) | ||
+ | { | ||
+ | mp3Basic(command); | ||
+ | } | ||
+ | else if(command < 0x40) | ||
+ | { | ||
+ | mp3_5bytes(command, | ||
+ | } | ||
+ | else if(command < 0x50) | ||
+ | { | ||
+ | mp3_6bytes(command, | ||
+ | } | ||
+ | else return; | ||
+ | } | ||
+ | |||
+ | void mp3Basic(int8_t command) | ||
+ | { | ||
+ | Send_buf[0] = 0x7e; //starting byte | ||
+ | Send_buf[1] = 0x02; //the number of bytes of the command without starting byte and ending byte | ||
+ | Send_buf[2] = command; | ||
+ | Send_buf[3] = 0xef; // | ||
+ | sendBytes(4); | ||
+ | } | ||
+ | void mp3_5bytes(int8_t command, uint8_t dat) | ||
+ | { | ||
+ | Send_buf[0] = 0x7e; //starting byte | ||
+ | Send_buf[1] = 0x03; //the number of bytes of the command without starting byte and ending byte | ||
+ | Send_buf[2] = command; | ||
+ | Send_buf[3] = dat; // | ||
+ | Send_buf[4] = 0xef; // | ||
+ | sendBytes(5); | ||
+ | } | ||
+ | void mp3_6bytes(int8_t command, int16_t dat) | ||
+ | { | ||
+ | Send_buf[0] = 0x7e; //starting byte | ||
+ | Send_buf[1] = 0x04; //the number of bytes of the command without starting byte and ending byte | ||
+ | Send_buf[2] = command; | ||
+ | Send_buf[3] = (int8_t)(dat >> 8);//datah | ||
+ | Send_buf[4] = (int8_t)(dat); | ||
+ | Send_buf[5] = 0xef; // | ||
+ | sendBytes(6); | ||
+ | } | ||
+ | void sendBytes(uint8_t nbytes) | ||
+ | { | ||
+ | for(uint8_t i=0; i < nbytes; i++)// | ||
+ | { | ||
+ | myMP3.write(Send_buf[i]) ; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // fonction motor a retravailler en fonction du résultat voulu avec le moteur .... | ||
+ | void accel_motor() { | ||
+ | for (int pwm=0; pwm <= 150; pwm++){ // 1ere acceleration vitesse moyenne | ||
+ | analogWrite(motorpin, | ||
+ | delay(10); | ||
+ | } | ||
+ | | ||
+ | for (int pwm=150; pwm <= 255; pwm++){ // 2eme acceleration vitesse max | ||
+ | | ||
+ | | ||
+ | } | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | | ||
+ | |||
===== Photos ===== | ===== Photos ===== | ||
- | Code pour afficher les images du projet : | + | |
- | < | + | {{gallery>?& |