Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


projets:lecteurs_audio_dfplayer:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
projets:lecteurs_audio_dfplayer:accueil [2019/06/07 16:27]
laurent [Hardware]
projets:lecteurs_audio_dfplayer:accueil [2019/07/10 10:28]
laurent [Lecteurs audio DFplayer]
Ligne 1: Ligne 1:
 ====== Lecteurs audio DFplayer ====== ====== Lecteurs audio DFplayer ======
   * Porteur du projet : Réso-nance [[:user:laurent|laurent]]   * Porteur du projet : Réso-nance [[:user:laurent|laurent]]
-  * Date : 07/06/2019/ - ...+  * Date : 07/06/2019/
   * Licence : [[http://creativecommons.org/licenses/by-sa/3.0/legalcode|CC-by-sa-3.0]]   * Licence : [[http://creativecommons.org/licenses/by-sa/3.0/legalcode|CC-by-sa-3.0]]
   * Description : Plusieurs lecteurs audio wav controllés par un arduino   * Description : Plusieurs lecteurs audio wav controllés par un arduino
-  * Fichiers sources : //mettre un lien// +  * Fichiers sources : {{ :projets:lecteurs_audio_dfplayer:audioplayer3.zip |}}
-  * Lien //mettre un lien//+
  
 {{tag>dflplayer, audio, wav, arduino, impédance}} {{tag>dflplayer, audio, wav, arduino, impédance}}
Ligne 28: Ligne 27:
 {{ :projets:lecteurs_audio_dfplayer:circuitlamartine_schema.png?direct&200 |}} {{ :projets:lecteurs_audio_dfplayer:circuitlamartine_schema.png?direct&200 |}}
 Le circuit pour deux lecteurs indépendants comprends donc: Le circuit pour deux lecteurs indépendants comprends donc:
-  * deux DFplayers+  * deux DFplayers : outre leur connection à l'arduino, il est nécessaire de **connecter ensemble les deux pins de masse** par un câble le plus court possible pour éviter tout ajout de bruit numérique.
   * un arduino nano qui centralise les contrôles et communique avec les DFplayers   * un arduino nano qui centralise les contrôles et communique avec les DFplayers
   * deux boutons par lecteur pour choisir la piste à lire   * deux boutons par lecteur pour choisir la piste à lire
   * deux résistances de 220R pour adapter l'impédance  du DFplayer à celle plus élevée du casque. Cette valeur à été choisie empiriquement pour obtenir le meilleur rapport qualité sonore / volume maximal possible. Une résistance trop élevée diminuera drastiquement le volume sonore tandis qu'une résistance trop faible laissera entendre du bruit lié à une intensité trop élevée drainée par le casque.   * deux résistances de 220R pour adapter l'impédance  du DFplayer à celle plus élevée du casque. Cette valeur à été choisie empiriquement pour obtenir le meilleur rapport qualité sonore / volume maximal possible. Une résistance trop élevée diminuera drastiquement le volume sonore tandis qu'une résistance trop faible laissera entendre du bruit lié à une intensité trop élevée drainée par le casque.
  
-Le potentiomètre qui ne figure pas sur le schéma est connecté comme suit : {:projets:lecteurs_audio_dfplayer:potard.jpg?direct&200|}}+Le potentiomètre qui ne figure pas sur le schéma est connecté comme suit : {{:projets:lecteurs_audio_dfplayer:potard.jpg?direct&200|}}
 ===== Code ===== ===== Code =====
-Guide pas à pas pour la réalisation du projet.+Le code utilisé par l'arduino utilise la librairie standard SoftwareSerial ainsi que la librairie [[https://github.com/DFRobot/DFRobotDFPlayerMini|DFRobotDFPlayerMini]] . Il est écrit de façon modulaire pour pouvoir aisément ajouter des lecteurs. Un //struct// représente chaque lecteur, les pins de ses boutons de lecture, une entrée analogique pour le volume ainsi qu'un pointeur vers l'instance de SoftwareSerial par qui il communique. 
 +Un //define// ligne 5 permet d'activer ou de désactiver le contrôle numérique du volume via un potentiomètre connecté sur une entrée analogique. 
 +<file c++> 
 +#include "Arduino.h" 
 +#include "SoftwareSerial.h" 
 +#include "DFRobotDFPlayerMini.h" 
 +#define MAXVOLUME 25 
 +//#define volumeControl
  
-===== Photos ===== +SoftwareSerial softwareSerial1(10, 11); // RX, TX 
-Code pour afficher les images du projet : +SoftwareSerial softwareSerial2(2, 3); // RX, TX 
-<code>{{gallery>?&crop&lightbox}}</code>+DFRobotDFPlayerMini Player1; 
 +DFRobotDFPlayerMini Player2;
  
 +struct player {
 +  String name;
 +  int button1pin;
 +  int button2pin;
 +  int potPin;
 +  bool button1State;
 +  bool button2State;
 +  int volume;
 +  SoftwareSerial* serial;
 +  DFRobotDFPlayerMini &player;
 +};
  
 +player player1 = {"player1", 4, 5, A0, HIGH, HIGH, 0, &softwareSerial1, Player1};
 +player player2 = {"player2", 6, 7, A1, HIGH, HIGH, 0, &softwareSerial2, Player2};
 +
 +void setup()
 +{
 +  Serial.begin(115200);
 +  pinMode(LED_BUILTIN, OUTPUT);
 +  digitalWrite(LED_BUILTIN, LOW);
 +  initialise(player1);
 +  delay(2000);
 +  initialise(player2);
 +  delay(2000);
 +  digitalWrite(LED_BUILTIN, HIGH);
 +}
 +
 +void loop() {
 +  DFRobotDFPlayerMini *test = &player1.player;
 +  playerHandle(&player1);
 +  playerHandle(&player2);
 +  delay(100);
 +}
 +
 +void initialise(player DFplayer) {
 +  pinMode(DFplayer.button1pin, INPUT_PULLUP);
 +  pinMode(DFplayer.button2pin, INPUT_PULLUP);
 +  DFplayer.serial->begin(9600);
 +  if (!DFplayer.player.begin(*DFplayer.serial)) {  //Use softwareSerial to communicate with mp3.
 +    Serial.println(F("Unable to begin:"));
 +    Serial.println(F("1.Please recheck the connection!"));
 +    Serial.println(F("2.Please insert the SD card!"));
 +    while (true) { // blink fast on initialisation error
 +      digitalWrite(LED_BUILTIN, HIGH);
 +      delay(300);
 +      digitalWrite(LED_BUILTIN, LOW);
 +      delay(300);
 +      }
 +  }
 +  delay(1000);
 +  Serial.println(F("DFPlayer Mini online."));
 +  DFplayer.player.setTimeOut(500); //Set serial communication time out 500ms
 +  //----Set volume----
 +  DFplayer.player.volume(MAXVOLUME);  //Set volume value (0~30).
 +  //----Set different EQ----
 +    DFplayer.player.EQ(DFPLAYER_EQ_BASS);
 +  //----Set device we use SD as default----
 +  DFplayer.player.outputDevice(DFPLAYER_DEVICE_SD);
 +  //----Mp3 control----
 +  DFplayer.player.enableDAC();  //Enable On-chip DAC
 +}
 +
 +void playerHandle (player *DFplayer) {
 +  bool button1 = digitalRead(DFplayer->button1pin);
 +  bool button2 = digitalRead(DFplayer->button2pin);
 +  int potValue = analogRead(DFplayer->potPin);
 +  DFRobotDFPlayerMini Player = DFplayer->player;
 +  if (button1 == LOW && DFplayer->button1State == HIGH) Player.play(1);
 +  if (button2 == LOW && DFplayer->button2State == HIGH) Player.play(2);
 +  #ifdef volumeControl
 +  int volume = map(potValue, 0, 1023, 0, MAXVOLUME);
 +  if (volume != DFplayer->volume) {Player.volume(volume); Serial.println(volume);}
 +  #endif
 +  DFplayer->button1State = button1;
 +  DFplayer->button2State = button2;
 +  DFplayer->volume = volume;
 +}
 +</file>
  
/home/resonancg/www/wiki/data/pages/projets/lecteurs_audio_dfplayer/accueil.txt · Dernière modification: 2019/07/10 10:34 de laurent