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 | ||
|
projets:le_miracle_dans_le_magasin:accueil [2018/02/20 16:13] resonance |
projets:le_miracle_dans_le_magasin:accueil [2018/02/21 09:59] (Version actuelle) resonance [Final code miracle] |
||
|---|---|---|---|
| Ligne 4: | Ligne 4: | ||
| * Licence : [[http:// | * Licence : [[http:// | ||
| * Description : synchroniser le son au mouvement | * Description : synchroniser le son au mouvement | ||
| - | * Fichiers sources : //mettre un lien// | + | * Fichiers sources : {{ :projets: |
| - | * Lien : //mettre un lien// | + | |
| {{tag> | {{tag> | ||
| Ligne 23: | Ligne 23: | ||
| <WRAP half column> | <WRAP half column> | ||
| - | * 1 ARDUINO NANO 3.0 | + | * Android avec application " |
| + | | ||
| * 1 UART Série mp3 LECTEUR MODULE BORD 3W OPEN-SMART | * 1 UART Série mp3 LECTEUR MODULE BORD 3W OPEN-SMART | ||
| * 1 CARTE MICRO SD | * 1 CARTE MICRO SD | ||
| Ligne 35: | Ligne 36: | ||
| </ | </ | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ===== Codes Arduino ===== | ||
| + | ==== Tests ==== | ||
| + | * {{ : | ||
| + | * {{ : | ||
| + | * {{ : | ||
| + | |||
| + | ==== Final code " | ||
| + | * {{ : | ||
| + | |||
| + | |||
| + | <code cpp> | ||
| + | /* Projet Miracle - Jérôme Kdiajanian | ||
| + | * Code : Reso-nance numérique (+ Open-Smart Demo) | ||
| + | * 29/01/2018 | ||
| + | * System : Android with " | ||
| + | * | ||
| + | * Wiring : | ||
| + | * Serial MP3 Player A | Arduino UNO R3// | ||
| + | * RX | 7 | ||
| + | * TX | 8 | ||
| + | * VCC | 5V | ||
| + | * GND | GND | ||
| + | * Bluetooth HC-05 | ||
| + | * TX | 11 | ||
| + | * RX | 10 | ||
| + | * Driver ULN2003 | ||
| + | */ | ||
| + | |||
| + | #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 | ||
| + | | ||
| + | | ||
| + | } | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||