Module son , et module carte sd
#23
Posté 17 mars 2012 - 11:13
The sd card must be formated at FAT format.
Create a "sound" directory, put mp3/wav/midi files under the SD card, and make sure the length of file name do not exceed 8 letters.
...Créez un dossier "sound" mettez les fichiers mp3/wav/midi dans la carte SD ...
J'imagine que les fichier sons doivent étre mis dans ce dossier pour que la carte les trouve.
#24
Posté 17 mars 2012 - 11:21
Mets ce fichier , il faut que je le nomme sound , c'est ça ?????
Désolé si je parais bête comme ça , mais il est préférable que je comprenne bien.
Met merci de ton aide Thor , j’attends une réponse de ta par et je teste ça.
Ps : Je pense que c'est plutôt un dossier et non un fichier ???
#27
Posté 17 mars 2012 - 11:35
Dalleur je n'avais même pas vue ça sur le site
The sd card must be formated at FAT format.
Create a "sound" directory, put mp3/wav/midi files under the SD card, and make sure the length of file name do not exceed 8 letters.
Encore merci a toi Thor tu ma enlevais une épine du pied.
#29
Posté 19 mars 2012 - 12:34
#include <Wire.h> #include <stdlib.h> #define ArduinoPlayer_address 0x35 //Arduino Lecteur 0x35 adresse I2C (par défaut) void TwiSend(const char *cmd) //I2C Command { char len = 0; len = strlen(cmd); //Calculer la longueur de la commande Wire.beginTransmission(ArduinoPlayer_address); // Arduino Lecteur adresse I2C while(len--) { Wire.send(*(cmd++)); } Wire.endTransmission(); // stop transmission } void setup() { Wire.begin(); // rejoindre le bus I2C (adresse en option pour le maître) Serial.begin(9600); delay(2000);//Attendez 2 secondes Serial.println("Ready"); TwiSend("\\:v 255\r\n"); // régler le volume, de 0 (minimum) -255 (maximum) } //Recevez de contrôle-commande à partir de série void loop() { int val; if(Serial.available() > 0) { val=Serial.read(); switch(val) { case 'p': // Pause TwiSend("\\<img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/tongue.gif' class='bbc_emoticon' alt=':P' />\r\n"); Serial.println("OK"); break; case 's': // Continoue to play TwiSend("\\:s\r\n"); Serial.println("OK"); break; case 'n': TwiSend("\\:n\r\n"); // Play prochain Serial.println("OK"); break; case 'u': TwiSend("\\:u\r\n"); // Play précédent Serial.println("OK"); break; case 'm': //Play //Le volume doit être réglé avant de jouer le son TwiSend("\\:v 250\r\n"); //régler le volume, de 0 (minimum) -255 (maximum) TwiSend("\\yes\r\n"); Serial.println("OK"); break; default: break; } } }
En faite voila se que je conte faire , et je vous explique se que je ne comprends pas dans se code.
Donc avec le morceau de code que j'ai pu faire pour contrôlé ma pince avec ma télécommande , je conte modifier se code
celui si ^^ pour contrôlé les voie grâce a ma télécommande.
Voilà ce que je ne comprends pas dans ce code que j'ai exposé ^^
Je ne vois pas comment il on déclaré les pins 4 ,5 analogique du module audio comme indiqué sur se
TUTO
Si une âme charitable peu éclairé ma lanterne ça serré sympa , merci d'avance.
@Cordialement.
#30
Posté 19 mars 2012 - 12:46
Page Facebook : https://www.facebook...appartelier2.0/
Page Twitter : https://twitter.com/2Appartelier (bateau seulement)
Boutique Robot-Maker : https://www.robot-ma...er-20/produits/
Besoin d'une impression 3D grand format ? Contactez moi !
#32
Posté 20 mars 2012 - 12:56
Bon voila j'ai testé de contrôlé le module audio micros carte SD par la télécommande IR , rien qu’avec une pression d'une
touche de la télécommande.
Je ni arrive pas du tous.
C'est assez dure je dois dire.
Alors et t'il possible qu'une personne , puisse me mètre sur la voie ( attention je ne demande pas con face mon travaille ,
mes juste m’aiguiller ).
Donc voila le code de ma pince que je contrôle avec ma télécommande IR , celui si et fonctionnel.
#include <Servo.h> #include <IRremote.h> #include <IRremoteInt.h> Servo servo1; // créer un objet d'asservissement pour commander le servo1 Servo servo2; // créer un objet d'asservissement pour commander le servo2 int possition1 ; // variable pour stocker la position1 d'asservissement int possition2 = 90; //variable pour stocker la position2 d'asservissement int RECV_PIN = 5; int current; //conserver la trace de la position actuelle du servo int codeValue; //les code de la télécommande IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); // lancer un port série sur le serial monitor servo1.attach(7); // attache le servo sur la broche 7 à l'objet d'asservissement servo1.write(possition1); // mis en position1 de départ servo1 servo2.attach(6); // attache le servo sur la broche 6 à l'objet d'asservissement servo2.write(possition2);// mis en position2 de départ servo2 irrecv.enableIRIn(); // Démarrer le récepteur } void loop() { Serial.println(results.value, DEC); if (irrecv.decode(&results)) { codeValue = results.value; switch (codeValue) { case 16615543: // touche 4 de la télécomande ouvre la pince current +=80; if (current > 180) current = 0; servo1.write(current); break; case 16619623: // touche 6 de la télécommande ferme la pince current -=80; if (current < 0) current = 180; servo1.write(current); break; case 16591063: // touche 2 de la télécommande décend la pince current +=40; if (current > 180) current = 0; servo2.write(current); break; case 16607383: // touche 8 de la télécommande léve la pince current -=40; if (current < 0) current = 180; servo2.write(current); break; int sensorValue = analogRead(1); // analogique 1, a 10k while (sensorValue > 255) { //valeur peut être ajustée, 255 très sensible sensorValue = analogRead(1); //lit la valeur du capteur à nouveau pour la boucle } servo1.write(possition2); current = possition2; servo1.write(possition1); current = possition1; servo2.write(possition2); current = possition2; servo2.write(possition1); current = possition1; } irrecv.resume(); } }
Et voici le code d'aisé qui nous propose pour faire fonctionné le module audio.
#include <Wire.h> #include <stdlib.h> #define ArduinoPlayer_address 0x35 //Arduino Lecteur 0x35 adresse I2C (par défaut) void TwiSend(const char *cmd) //I2C Command { char len = 0; len = strlen(cmd); //Calculer la longueur de la commande Wire.beginTransmission(ArduinoPlayer_address); // Arduino Lecteur adresse I2C while(len--) { Wire.send(*(cmd++)); } Wire.endTransmission(); // stop transmission } void setup() { Wire.begin(); // rejoindre le bus I2C (adresse en option pour le maître) Serial.begin(9600); delay(2000);//Attendez 2 secondes Serial.println("Ready"); TwiSend("\\:v 255\r\n"); // régler le volume, de 0 (minimum) -255 (maximum) } //Recevez de contrôle-commande à partir de série void loop() { int val; if(Serial.available() > 0) { val=Serial.read(); switch(val) { case 'p': // Pause TwiSend("\\<img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/tongue.gif' class='bbc_emoticon' alt=':P' />\r\n"); Serial.println("OK"); break; case 's': // Continoue to play TwiSend("\\:s\r\n"); Serial.println("OK"); break; case 'n': TwiSend("\\:n\r\n"); // Play prochain Serial.println("OK"); break; case 'u': TwiSend("\\:u\r\n"); // Play précédent Serial.println("OK"); break; case 'm': //Play //Le volume doit être réglé avant de jouer le son TwiSend("\\:v 250\r\n"); //régler le volume, de 0 (minimum) -255 (maximum) TwiSend("\\yes\r\n"); Serial.println("OK"); break; default: break; } } }
Je voudrais fusionné se code ^^ met en le modifiant pour que je puisse enclenché une voie avec la télécommande IR.
Désolé si je ne suis pas clair dans mes explications ,mes ce n’est pas si facile a dire par écrie.
Je continue de mon coté a trouvé la solution.
Merci d'avance.
@Cordialement.
#33
Posté 20 mars 2012 - 03:24
j'imagine que quand tu appuis sur monter pince il lit le mp3 nommé "pince monté.mp3"?Re les amies.
Bon voila j'ai testé de contrôlé le module audio micros carte SD par la télécommande IR , rien qu’avec une pression d'une
touche de la télécommande.
Je ni arrive pas du tous.
C'est assez dure je dois dire.
Alors et t'il possible qu'une personne , puisse me mètre sur la voie ( attention je ne demande pas con face mon travaille ,
mes juste m’aiguiller ).
Donc voila le code de ma pince que je contrôle avec ma télécommande IR , celui si et fonctionnel.#include <Servo.h> #include <IRremote.h> #include <IRremoteInt.h> Servo servo1; // créer un objet d'asservissement pour commander le servo1 Servo servo2; // créer un objet d'asservissement pour commander le servo2 int possition1 ; // variable pour stocker la position1 d'asservissement int possition2 = 90; //variable pour stocker la position2 d'asservissement int RECV_PIN = 5; int current; //conserver la trace de la position actuelle du servo int codeValue; //les code de la télécommande IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); // lancer un port série sur le serial monitor servo1.attach(7); // attache le servo sur la broche 7 à l'objet d'asservissement servo1.write(possition1); // mis en position1 de départ servo1 servo2.attach(6); // attache le servo sur la broche 6 à l'objet d'asservissement servo2.write(possition2);// mis en position2 de départ servo2 irrecv.enableIRIn(); // Démarrer le récepteur } void loop() { Serial.println(results.value, DEC); if (irrecv.decode(&results)) { codeValue = results.value; switch (codeValue) { case 16615543: // touche 4 de la télécomande ouvre la pince current +=80; if (current > 180) current = 0; servo1.write(current); break; case 16619623: // touche 6 de la télécommande ferme la pince current -=80; if (current < 0) current = 180; servo1.write(current); break; case 16591063: // touche 2 de la télécommande décend la pince current +=40; if (current > 180) current = 0; servo2.write(current); break; case 16607383: // touche 8 de la télécommande léve la pince current -=40; if (current < 0) current = 180; servo2.write(current); break; int sensorValue = analogRead(1); // analogique 1, a 10k while (sensorValue > 255) { //valeur peut être ajustée, 255 très sensible sensorValue = analogRead(1); //lit la valeur du capteur à nouveau pour la boucle } servo1.write(possition2); current = possition2; servo1.write(possition1); current = possition1; servo2.write(possition2); current = possition2; servo2.write(possition1); current = possition1; } irrecv.resume(); } }
Et voici le code d'aisé qui nous propose pour faire fonctionné le module audio.#include <Wire.h> #include <stdlib.h> #define ArduinoPlayer_address 0x35 //Arduino Lecteur 0x35 adresse I2C (par défaut) void TwiSend(const char *cmd) //I2C Command { char len = 0; len = strlen(cmd); //Calculer la longueur de la commande Wire.beginTransmission(ArduinoPlayer_address); // Arduino Lecteur adresse I2C while(len--) { Wire.send(*(cmd++)); } Wire.endTransmission(); // stop transmission } void setup() { Wire.begin(); // rejoindre le bus I2C (adresse en option pour le maître) Serial.begin(9600); delay(2000);//Attendez 2 secondes Serial.println("Ready"); TwiSend("\\:v 255\r\n"); // régler le volume, de 0 (minimum) -255 (maximum) } //Recevez de contrôle-commande à partir de série void loop() { int val; if(Serial.available() > 0) { val=Serial.read(); switch(val) { case 'p': // Pause TwiSend("\\<img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/tongue.gif' class='bbc_emoticon' alt=':P' />\r\n"); Serial.println("OK"); break; case 's': // Continoue to play TwiSend("\\:s\r\n"); Serial.println("OK"); break; case 'n': TwiSend("\\:n\r\n"); // Play prochain Serial.println("OK"); break; case 'u': TwiSend("\\:u\r\n"); // Play précédent Serial.println("OK"); break; case 'm': //Play //Le volume doit être réglé avant de jouer le son TwiSend("\\:v 250\r\n"); //régler le volume, de 0 (minimum) -255 (maximum) TwiSend("\\yes\r\n"); Serial.println("OK"); break; default: break; } } }
Je voudrais fusionné se code ^^ met en le modifiant pour que je puisse enclenché une voie avec la télécommande IR.
Désolé si je ne suis pas clair dans mes explications ,mes ce n’est pas si facile a dire par écrie.
Je continue de mon coté a trouvé la solution.
Merci d'avance.
@Cordialement.
c'est ça ?
je ne sais pas si c'est possible avec le code d'essai que tu utilise car il n'y as que "pause,play,next,stop" comme commande du mp3
il faudrais que tu trouves le code qui permet d'appeller un morceau bien spcecifique?
bon courage
#34
Posté 20 mars 2012 - 03:58
j'imagine que quand tu appuis sur monter pince il lit le mp3 nommé "pince monté.mp3"?
c'est ça ?
je ne sais pas si c'est possible avec le code d'essai que tu utilise car il n'y as que "pause,play,next,stop" comme commande du mp3
il faudrais que tu trouves le code qui permet d'appeller un morceau bien spcecifique?
bon courage
hum j'ai un peu reflechie et je prefere presiser que je ne suis pas sur de ce que j'ai ecris
int derniermp3 = 0 //declaration du dernier mp3 qui a était lu void jouermorceauscpecifique (int numeromp3) { if (numeromp3 >= derniermp3)// si le numero du mp3 desirer est superieur ou egale au dernier mp3 jouer { for (int i=derniermp3; i < derniermp3; i++){ // boucle pour passer jusqu'au morceau voulu TwiSend("[url="file://\\:n\r\n"]\\:n\r\n[/url]"); // Play prochain derniermp3 = i } } if (numeromp3 <= derniermp3) { for (int i=derniermp3; i > derniermp3; i--){ // boucle pour passer jusqu'au morceau voulu TwiSend("[url="file://\\:u\r\n"]\\:u\r\n[/url]"); // Play précédent derniermp3 = i } } }
en gros tu mets les fichiers dans ton dossier sound
il sont nommé de 1 a 6 (par exemple : 4 .mp3)
on va dire que monté pince c'est le numeros 4
j'appelle la fonction :
jouermorceauscpecifique(4);
l'incrementation de la boucle devrais (au conditionnel) passer les morceau jusqu'au 4
je le re-dit je ne suis pas sure de ce que j'ai ecris dans soyer indulgent
en esperant avoir pu aider
Edit : sur le code je ne sais pas pourquoi mais il a des balise url qui se glisse ...
TwiSend("\\:u\r\n"); // Play précédent
#35
Posté 20 mars 2012 - 05:04
Donc je vais te répondre.
j'imagine que quand tu appuis sur monter pince il lit le mp3 nommé "pince monté.mp3"?
c'est ça ?
je ne sais pas si c'est possible avec le code d'essai que tu utilise car il n'y as que "pause,play,next,stop" comme commande du mp3
il faudrais que tu trouves le code qui permet d'appeller un morceau bien spcecifique?
bon courage
Non non pas du tous quand j'appuie sur le bouton pour levé la pince , elle se lève c'est tous.
Normal je n'est pas compilé les de code , je veux dire que je n'est pas fusionné les de code.
En faite se que je voudrais faire , c'est quand j'appuie sur une touche de ma télécommande une voie se mais en route , après appuyer sur une autre touche de la télécommande et passé a la deuxième voie , comme un mode play suivant mes en fonction de la télécommande.
Edit : sur le code je ne sais pas pourquoi mais il a des balise url qui se glisse ...
Par contre je ne comprend pas le fonctionnement de url???
Bon je vais testé le code que tu ma fait.
int derniermp3 = 0 //declaration du dernier mp3 qui a était lu void jouermorceauscpecifique (int numeromp3) { if (numeromp3 >= derniermp3)// si le numero du mp3 desirer est superieur ou egale au dernier mp3 jouer { for (int i=derniermp3; i < derniermp3; i++){ // boucle pour passer jusqu'au morceau voulu TwiSend("[url="file://\\:n\r\n"]\\:n\r\n[/url]"); // Play prochain derniermp3 = i } } if (numeromp3 <= derniermp3) { for (int i=derniermp3; i > derniermp3; i--){ // boucle pour passer jusqu'au morceau voulu TwiSend("[url="file://\\:u\r\n"]\\:u\r\n[/url]"); // Play précédent derniermp3 = i } } }
Encore merci julkien.
#37
Posté 20 mars 2012 - 05:43
J'ai testé ton code donc pour commencé je rencontre une erreur sur cette ligne.
TwiSend("[url="file://\\:n\r\n"]\\:n\r\n[/url]"); // Play prochain
Ou alors c'est moi qui ne c'est pas fusionné ton code aux mieux.
oui reprend cette ligne dans ton code d'exemple, je ne sais pas pourquoi quand je le publie sur le site il me met des balise
normalement il devrais ressembler a ça
int derniermp3 //declaration du dernier mp3 qui a était lu
void jouermorceauscpecifique (int numeromp3)
{
if (numeromp3 >= derniermp3)// si le numero du mp3 desirer est superieur ou egale au dernier mp3 jouer
{
for (int i=derniermp3; i < derniermp3; i++){ // boucle pour passer jusqu'au morceau voulu
TwiSend("\\:n\r\n"); // Play prochain
derniermp3 = i;
}
}
if (numeromp3 <= derniermp3)
{
for (int i=derniermp3; i > derniermp3; i--){ // boucle pour passer jusqu'au morceau voulu
TwiSend("\\:u\r\n"); // Play précédent
derniermp3 = i;
}
}
}
#39
Posté 20 mars 2012 - 07:18
julkien j'ai fait comme tu ma dit et bien j'ai toujour un message d'erreur
il me dit TwiSend'was not declared in this scope.
En gros twiSend n'est pas déclaré , si j'ai bien compris????
oui c'est normale c'est une fonction qui ce gref dans le code je mets ça propre et je reviend pour te le donner
#40
Posté 20 mars 2012 - 07:34
oui c'est normale c'est une fonction qui ce gref dans le code je mets ça propre et je reviend pour te le donner
#include <Servo.h> #include <IRremote.h> #include <IRremoteInt.h> #include <Wire.h> #include <stdlib.h> #define ArduinoPlayer_address 0x35 //Arduino Lecteur 0x35 adresse I2C (par défaut) Servo servo1; // créer un objet d'asservissement pour commander le servo1 Servo servo2; // créer un objet d'asservissement pour commander le servo2 int possition1 ; // variable pour stocker la position1 d'asservissement int possition2 = 90; //variable pour stocker la position2 d'asservissement int RECV_PIN = 5; int current; //conserver la trace de la position actuelle du servo int codeValue; //les code de la télécommande IRrecv irrecv(RECV_PIN); decode_results results; int derniermp3 = 0; //declaration du dernier mp3 qui a était lu void TwiSend(const char *cmd) //I2C Command { char len = 0; len = strlen(cmd); //Calculer la longueur de la commande Wire.beginTransmission(ArduinoPlayer_address); // Arduino Lecteur adresse I2C while(len--) { Wire.send(*(cmd++)); } Wire.endTransmission(); // stop transmission } void jouermorceauscpecifique (int numeromp3) { if (numeromp3 >= derniermp3)// si le numero du mp3 desirer est superieur ou egale au dernier mp3 jouer { for (int i=derniermp3; i < derniermp3; i++){ // boucle pour passer jusqu'au morceau voulu TwiSend("[url="file://\\:n\r\n"]\\:n\r\n[/url]"); // Play prochain derniermp3 = i; } } if (numeromp3 <= derniermp3) { for (int i=derniermp3; i > derniermp3; i--){ // boucle pour passer jusqu'au morceau voulu TwiSend("[url="file://\\:u\r\n"]\\:u\r\n[/url]"); // Play précédent derniermp3 = i; } } } void setup() { Wire.begin(); // rejoindre le bus I2C (adresse en option pour le maître) Serial.begin(9600); // lancer un port série sur le serial monitor servo1.attach(7); // attache le servo sur la broche 7 à l'objet d'asservissement servo1.write(possition1); // mis en position1 de départ servo1 servo2.attach(6); // attache le servo sur la broche 6 à l'objet d'asservissement servo2.write(possition2);// mis en position2 de départ servo2 irrecv.enableIRIn(); // Démarrer le récepteur delay(2000);//Attendez 2 secondes Serial.println("Ready"); TwiSend("[url="file://\\:v"]\\:v[/url] 255\r\n"); } void loop() { Serial.println(results.value, DEC); if (irrecv.decode(&results)) { codeValue = results.value; switch (codeValue) { case 16615543: // touche 4 de la télécomande ouvre la pince current +=80; if (current > 180) current = 0; servo1.write(current); break; case 0000000000:// truc a rensigner par raport au bouton de ta telecommande jouermorceauscpecifique(4); case 16619623: // touche 6 de la télécommande ferme la pince current -=80; if (current < 0) current = 180; servo1.write(current); break; case 16591063: // touche 2 de la télécommande décend la pince current +=40; if (current > 180) current = 0; servo2.write(current); break; case 16607383: // touche 8 de la télécommande léve la pince current -=40; if (current < 0) current = 180; servo2.write(current); break; int sensorValue = analogRead(1); // analogique 1, a 10k while (sensorValue > 255) { //valeur peut être ajustée, 255 très sensible sensorValue = analogRead(1); //lit la valeur du capteur à nouveau pour la boucle } servo1.write(possition2); current = possition2; servo1.write(possition1); current = possition1; servo2.write(possition2); current = possition2; servo2.write(possition1); current = possition1; } irrecv.resume(); } }
Répondre à ce sujet
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users