Advertisement
claudiusmarius

DFPlayerLogCorrection

Mar 24th, 2022
888
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.36 KB | None | 0 0
  1. // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3.   // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DFPLAYER MINI CORRECTION LOGARITHMIQUE DU VOLUME PA LOGICILE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4.   // Claude DUFOURMONT Le 21/03/2022
  5.   // Ma chaine YouTube : https://www.youtube.com/c/ClaudeDufourmont
  6.   // Mon Github : https://github.com/claudiusmarius
  7.   // Github associé à cette vidéo :...................
  8.   // Mes pastebin associés à ce code : ...............
  9.   // Ma page  Facebook : claude DUFOURMONT
  10.   // Ce code a été créé pour mettre en évidence la nécessité d'une correction logaritmique sur le volume pour compenser la non linéarité de l'oreille en réponse à une variation de
  11.   // volume linéaire, cette correction ici est logicielle.
  12.   // Ce code est valable à l'identique pour une utilisation avec un arduino UNO, NANO, SEEEDUINO XIAO et un ATtiny85 ou 84, pour ces 2 derniers, l'affectation des ports devra être
  13.   // réadaptée.
  14.   // Matériel :
  15.   // 1 Seeeduino XIAO ou arduino UNO, NANO, ou ATTtiny (85 ou 84)
  16.   // 1 potentiomètre à glissière linéaire de 10K (la valeur n'est pas absolument critique)
  17.   // 1 DFPlayer Mini
  18.   // 1 carte microSD
  19.   // 1 résistance de 1,2K
  20.   // 1 zéner de 3,3V (trier si possible une valeur légèrement inférieure
  21.   // 1 condensateur de  470 en découplage de la pinoche +Vcc du DFPlayer
  22.   // 1 un haut parleur de 8 ohms ( on peut descendre jusque 4 ohms, mais en soignant d'avantage l'alimentation du DFplayer Mini
  23.   // N'hesitez pas à me faire part de vos questions, remarques propositions, principalement depuis les commentaires de la vidéo YouTube associée
  24.   // Ce code est libre d'accés et peut donc être utilisé et partagé, l'auteur souhaite toutefois que son origine reste tracée
  25.   // vidéos associées à ce code :
  26.   // ..........................
  27.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  28.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  29.  
  30.   #include <SoftwareSerial.h>
  31.   #include <DFPlayerMini_Fast.h>                                // Cette librairie est préférable à DFRobotDFPlayerMini.h car elle permet d'éviter des parasites (experimental
  32.  
  33.   SoftwareSerial mySerial(8, 9); // RX, TX                      // Déclaration de ma liaison série
  34.   DFPlayerMini_Fast myMP3;                                      
  35.  
  36.  
  37.   #define BrocheCurseurPotentiometre A1                         // Affectation du curseur potentiomètre à la broche A1                                            
  38.   #define BrocheTX 9
  39.  
  40.   int a;
  41.   int aa;
  42.    
  43.   float ratio;                                                    // Ration entre LOG10aa et LOG10y
  44.   float ratio1024;                                                // Pour log
  45.   float SignalCorrige;                                            // Signal sonore corrigé logarithmiquement dans la fourchette 0 - 1023 points
  46.   float LOG10aa;                                                  // log10 du signal à corriger logiciellement
  47.   float LOG10y;
  48.  
  49.  
  50.   byte volumeLevel = 0;                                           //Signal de niveau sonore
  51.  
  52.   void setup()
  53.   {
  54.  
  55.   a= analogRead(BrocheCurseurPotentiometre);                      // Lecture de la valeur Analogique sur le curseur du potentiometre
  56.  
  57.   mySerial.begin(9600);
  58.   myMP3.begin(mySerial);
  59.  
  60.   pinMode (BrocheTX, OUTPUT);                                    // OUVERTURE DE LA LIAISON SERIE
  61.   delay (5);
  62.   volumeLevel = 0;
  63.   delay (5);
  64.  
  65.  // myMP3.loop(1);                                                // Lecture en boucle du fichier MP3 1
  66.   //myMP3.loop(2);                                                // Lecture en boucle du fichier MP3 2
  67.   //myMP3.loop(3);                                                // Lecture en boucle du fichier MP3 3
  68.   myMP3.loop(4);                                                // Lecture en boucle du fichier MP3 4
  69.   //myMP3.loop(5);                                                // Lecture en boucle du fichier MP3 5  Attention logs temps morts                                            
  70.   //myMP3.loop(6);                                                // Lecture en boucle du fichier MP3 6
  71.   //myMP3.loop(7);                                                // Lecture en boucle du fichier MP3 7
  72.  
  73.   pinMode (BrocheTX, INPUT_PULLUP);                             // FERMETURE DE LA LIAISON SERIE
  74.   delay (5);
  75.  
  76.   }
  77.  
  78.   void loop()
  79.   {
  80.  
  81.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  82.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  83.   // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++VOLUME AVEC CORRECTON DEBUT++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  84.   // ---------------------------------------------------INHIBER CE PARAGAPHE SI ON SOUHAITE JOUER SANS CORRECTION-----------------------------------------------------------------------
  85.  
  86.   a= analogRead(BrocheCurseurPotentiometre);
  87.   aa = a+1;
  88.   int y = 1024;                                                      // Pour log
  89.   LOG10y = log10 (y);
  90.   LOG10aa = log10 (aa);
  91.   ratio = log10 (aa) / log10 (y);
  92.   SignalCorrige = ratio*1023;
  93.   volumeLevel = map(SignalCorrige, 0, 1023, 0, 30);
  94.   if (analogRead(BrocheCurseurPotentiometre) < 3)
  95.   {
  96.   volumeLevel = 0;
  97.   }
  98.  
  99.   // -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  100.   // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++VOLUME AVEC CORRECTON FIN++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  101.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  102.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  103.  
  104.  
  105.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  106.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  107.   // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++VOLUME SANS CORRECTON DEBUT++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  108.  
  109.  
  110.  
  111.   /*
  112.   a= analogRead(BrocheCurseurPotentiometre);
  113.   volumeLevel = map(a, 0, 1023, 0, 30);
  114.   */
  115.  
  116.   // ---------------------------------------------------INHIBER CE PARAGAPHE SI ON SOUHAITE JOUER AVEC CORRECTION----------------------------------------------------------------------
  117.   // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++VOLUME SANS CORRECTON FIN+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  118.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  119.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  120.  
  121.  
  122.  
  123.   pinMode (BrocheTX, OUTPUT);
  124.   delay(5);
  125.   myMP3.volume(volumeLevel);
  126.   delay(5);
  127.   pinMode (BrocheTX, INPUT_PULLUP);
  128.  
  129.  
  130.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement