///////////////////////// // . Boite à sons . // ///////////////////////// /* BROCHAGE _________________ / D1 mini \ - |[ ]RST TX[ ]| - - |[ ]A0 -GPIO RX[ ]| - |[ ]D0-16 5-D1[ ]| - RX MP3-TF-16P |[X]D5-14 4-D2[ ]| - resistance 1K - TX MP3-TF-16P |[X]D6-12 0-D3[X]| - Bouton LED - |[X]D7-13 2-D4[ ]| LED_BUILTIN - |[ ]D8-15 GND[X]| - GND (Bouton, MP3-TF-16P) - |[ ]3V3 . 5V[X]| - MP3-TF-16P | +---+ | |_______|USB|_______| +-------\_/--------+ +5V |[X] MP3-TF-16P [ ]| resistance 1K - TX |[X] [ ]| RX |[X] __________ [ ]| |[ ]| |[ ]| |[ ]| CARTE |[ ]| Haut-Parleur |[X]| SD |[ ]| GND |[X]| |[ ]| Haut-Parleur |[X]| |[ ]| |___|__________|___| Matériel : - des fils dupont. - une breadbord - D1 mini (Wemos, LOLIN,...) - MP3-TF-16P (DFPlayer). - Carte SD micro (avec des son en .mp3 ou .wav) - bouton poussoir - resistance 1K - un haut-parleur - une alimentation 5V */ /* ___ / ___ \ |_| | | /_/ _ ___ _ |_| |___|_| |_ ___|_ _| |___| |_| Les petits Débrouillards - janvier 2019 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/ */ #include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" // D5 est le RX du ESP8266, connecté au TX du MP3-TF-16P // D6 est le TX du ESP8266, connecté au RX du MP3-TF-16P SoftwareSerial mySoftwareSerial(D5, D6); // RX, TX DFRobotDFPlayerMini myDFPlayer; long hasard; // déclaration d'une variable long int brocheBouton = 0; // le GPIO 0 du D1 Mini est la broche D3 int BrocheLed = 13; // Broche de la LED - le GPIO 13 du D1 Mini est la broche D int brillance = 0; // Intensité lumineuse de la LED int pas = 5; // Gradation de l'intensité lumineuse int nombreDeSons = 47;// indiquer le nombre de son sur la carte SD. Chaque fichier est numeroté de 001 à 047 ici. void setup() { mySoftwareSerial.begin(9600); Serial.begin(115200); // initialise la connexion série vers le PC à 115200 bauds Serial.println(); Serial.println(F("Boite à sons")); Serial.println(F("Initialisation du lecteur mp3 ... (peut prendre 3 à 5 secondes)")); if (!myDFPlayer.begin(mySoftwareSerial)) { // utilise softwareSerial pour communiquer avec le MP3-TF-16P. Serial.println(F("Incapable de démarrer :")); Serial.println(F("1. Vérifiez les connexions !")); Serial.println(F("2. Inserez la carte SD !")); while(true); } Serial.println(F("La Boite à sons prête !")); myDFPlayer.setTimeOut(500); // place la communication serie time out 500ms myDFPlayer.volume(20); // règle le volume (de 0 to 30). myDFPlayer.play(1); // joue le premier fichier son. // si la broche analogique 0 n'est pas connectée, le bruit analogique aléatoire // provoquera l'appel de l'instruction randomSeed() pour générer // différent nombre de départ à chaque exécution du programme. // randomSeed() brouillera alors la fonction aléatoire randomSeed(analogRead(0)); pinMode (brocheBouton, INPUT_PULLUP); // active la résistance de Pull-up interne pinMode(BrocheLed, OUTPUT); // déclare la broche en sortie } void loop() { analogWrite(BrocheLed, brillance); // Allume la led à la valeur souhaitée brillance = brillance + pas; // incrémente la lulimosité de la led if (brillance <= 0 || brillance >= 255) { // inverse l'incrémentation lorsque la luminosité est à un extrême (éteint ou maximum) pas = -pas; } delay(30); if ( digitalRead(brocheBouton) == LOW ) // lorqu'on appuis sur le bouton { analogWrite(BrocheLed, 255); // on allume la led au maximum. delay(250); // délais anti-rebond. Serial.println("Appuis Bouton"); // info sur le moniteur série hasard = random(1,nombreDeSons); // on tire un nombre au hasard de 1 à 47 (parce que j'ai 47 piste de son). Serial.println(hasard); // le nombre est sur le moniteur série myDFPlayer.play(hasard); // joue le son tiré au hasard. } }