Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DFPLAYER MINI CORRECTION LOGARITHMIQUE DU VOLUME PA LOGICILE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Claude DUFOURMONT Le 21/03/2022
- // Ma chaine YouTube : https://www.youtube.com/c/ClaudeDufourmont
- // Mon Github : https://github.com/claudiusmarius
- // Github associé à cette vidéo :...................
- // Mes pastebin associés à ce code : ...............
- // Ma page Facebook : claude DUFOURMONT
- // 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
- // volume linéaire, cette correction ici est logicielle.
- // 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
- // réadaptée.
- // Matériel :
- // 1 Seeeduino XIAO ou arduino UNO, NANO, ou ATTtiny (85 ou 84)
- // 1 potentiomètre à glissière linéaire de 10K (la valeur n'est pas absolument critique)
- // 1 DFPlayer Mini
- // 1 carte microSD
- // 1 résistance de 1,2K
- // 1 zéner de 3,3V (trier si possible une valeur légèrement inférieure
- // 1 condensateur de 470 en découplage de la pinoche +Vcc du DFPlayer
- // 1 un haut parleur de 8 ohms ( on peut descendre jusque 4 ohms, mais en soignant d'avantage l'alimentation du DFplayer Mini
- // N'hesitez pas à me faire part de vos questions, remarques propositions, principalement depuis les commentaires de la vidéo YouTube associée
- // Ce code est libre d'accés et peut donc être utilisé et partagé, l'auteur souhaite toutefois que son origine reste tracée
- // vidéos associées à ce code :
- // ..........................
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- #include <SoftwareSerial.h>
- #include <DFPlayerMini_Fast.h> // Cette librairie est préférable à DFRobotDFPlayerMini.h car elle permet d'éviter des parasites (experimental
- SoftwareSerial mySerial(8, 9); // RX, TX // Déclaration de ma liaison série
- DFPlayerMini_Fast myMP3;
- #define BrocheCurseurPotentiometre A1 // Affectation du curseur potentiomètre à la broche A1
- #define BrocheTX 9
- int a;
- int aa;
- float ratio; // Ration entre LOG10aa et LOG10y
- float ratio1024; // Pour log
- float SignalCorrige; // Signal sonore corrigé logarithmiquement dans la fourchette 0 - 1023 points
- float LOG10aa; // log10 du signal à corriger logiciellement
- float LOG10y;
- byte volumeLevel = 0; //Signal de niveau sonore
- void setup()
- {
- a= analogRead(BrocheCurseurPotentiometre); // Lecture de la valeur Analogique sur le curseur du potentiometre
- mySerial.begin(9600);
- myMP3.begin(mySerial);
- pinMode (BrocheTX, OUTPUT); // OUVERTURE DE LA LIAISON SERIE
- delay (5);
- volumeLevel = 0;
- delay (5);
- // myMP3.loop(1); // Lecture en boucle du fichier MP3 1
- //myMP3.loop(2); // Lecture en boucle du fichier MP3 2
- //myMP3.loop(3); // Lecture en boucle du fichier MP3 3
- myMP3.loop(4); // Lecture en boucle du fichier MP3 4
- //myMP3.loop(5); // Lecture en boucle du fichier MP3 5 Attention logs temps morts
- //myMP3.loop(6); // Lecture en boucle du fichier MP3 6
- //myMP3.loop(7); // Lecture en boucle du fichier MP3 7
- pinMode (BrocheTX, INPUT_PULLUP); // FERMETURE DE LA LIAISON SERIE
- delay (5);
- }
- void loop()
- {
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++VOLUME AVEC CORRECTON DEBUT++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // ---------------------------------------------------INHIBER CE PARAGAPHE SI ON SOUHAITE JOUER SANS CORRECTION-----------------------------------------------------------------------
- a= analogRead(BrocheCurseurPotentiometre);
- aa = a+1;
- int y = 1024; // Pour log
- LOG10y = log10 (y);
- LOG10aa = log10 (aa);
- ratio = log10 (aa) / log10 (y);
- SignalCorrige = ratio*1023;
- volumeLevel = map(SignalCorrige, 0, 1023, 0, 30);
- if (analogRead(BrocheCurseurPotentiometre) < 3)
- {
- volumeLevel = 0;
- }
- // -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++VOLUME AVEC CORRECTON FIN++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++VOLUME SANS CORRECTON DEBUT++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- /*
- a= analogRead(BrocheCurseurPotentiometre);
- volumeLevel = map(a, 0, 1023, 0, 30);
- */
- // ---------------------------------------------------INHIBER CE PARAGAPHE SI ON SOUHAITE JOUER AVEC CORRECTION----------------------------------------------------------------------
- // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++VOLUME SANS CORRECTON FIN+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- pinMode (BrocheTX, OUTPUT);
- delay(5);
- myMP3.volume(volumeLevel);
- delay(5);
- pinMode (BrocheTX, INPUT_PULLUP);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement