Advertisement
claudiusmarius

LogTrace

Mar 24th, 2022
896
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.89 KB | None | 0 0
  1. // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3.   // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~TRACE DE LA CORRECTION LOGARITHMIQUE D'UN SIGNAL~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  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 montrer la possibilité d'une correction logaritmique d'une rampe en vue de son utilisation sur un DFPlayer Mini
  11.   // Ce code est valable à l'identique pour une utilisation avec un arduino UNO, NANO, SEEEDUINO XIAO et ESP32
  12.   // N'hesitez pas à me faire part de vos questions, remarques propositions, principalement depuis les commentaires de la vidéo YouTube associée
  13.   // Ce code est libre d'accés et peut donc être utilisé et partagé, l'auteur souhaite toutefois que son origine reste tracée
  14.   // vidéos associées à ce code :
  15.   // ..........................
  16.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  17.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  18.  
  19.   int a;                                                // Signal à corriger (typiquement le curseur d'un potentiomètre de volume)
  20.   int aa;                                               // Signal à corriger modifié augmenté de 1 pour éviter de se retrouver avecle log d'un nombre < 1 (et donc un log négatif)
  21.                                                    
  22.  
  23.   float LOG10aa;                                        // log10 du signal à corriger logiciellement
  24.   float LOG10y;                                         // log10 du nombre 1023
  25.   float ratio;                                          // Rapport entre le log10 de aa et le log10 de 1024 pour avoir un résultat entre 0 et 1
  26.   float SignalCorrige;                                  // Signal sonore corrigé logarithmiquement dans la fourchette 0 - 1023 points
  27.  
  28.   byte volumeLevel;                                     // variable de volume sonore
  29.  
  30.   void setup()
  31.   {
  32.  
  33.   Serial.begin(9600);                                   // Initialisation du port série
  34.    
  35.   }
  36.  
  37.   void loop()
  38.  
  39.   {
  40.  
  41.   for (a = 0; a<=500; a++)     // Ce signal est l'image d'un potentiomètre (c'est le curseur) de volume dont les 2 extrémités sont branchées sur l'alimentation (Vcc - GND)
  42.                                // En principe son excursion va de 0 à 1023, je l'ai stoppé à 500 pour cette démo, le traceur série ne pouvant afficher que 500 simultanément sur un écran
  43.   {
  44.   aa = a+1;                                              // a, via aa est talonné à 1, les logs < 1 étant négatifs
  45.   int y = 1024;
  46.   LOG10y = log10 (y);
  47.   LOG10aa = log10 (aa);
  48.   ratio = log10 (aa) / log10 (y);
  49.   SignalCorrige = ratio*1023;
  50.   volumeLevel = map(SignalCorrige, 0, 1023, 0, 30);      // Conversion en 0 - 30 points pour être compatible avec la librairie du DFPlayer
  51.   Serial.println (SignalCorrige) ;
  52.   //Serial.println (volumeLevel) ;
  53.   //Serial.println (LOG10aa) ;
  54.    
  55.   }
  56.    delay(10000);                                        // Tempo de 10 secondes avant une nouvelle boucle
  57.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement