Advertisement
claudiusmarius

LEDCalculateurNewConcept

Apr 7th, 2022
841
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.82 KB | None | 0 0
  1. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2.   // Claude DUFOURMONT Le 05/04/2022
  3.   // https://www.youtube.com/c/ClaudeDufourmont
  4.   // Nouveau concept pour calculer la résistance série d'une LED, en prenant en compte une donnée supplémentaire : la perception de la luminosité par l'œil humain
  5.   // Ce code est associé à la vidéo YouTube : https://youtu.be/AS8kzdWavEM
  6.   // Ce code est associé à Github :https://github.com/claudiusmarius/https-github.com-claudiusmarius-LED-CALCULATOR---NEW-CONCEPT/upload/main
  7.   //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  8.  
  9.   #define BrocheDAC A0                  // Envoie signal ANA vers la base du transistor Q1
  10.   #define potVariationSignal A4         // Curseur potentiomètre su A4
  11.   #define BrocheVC A8                   // "Image"tension collecteur  sur A8
  12.   #define BrocheVE A7                   // "Image"tension émetteur  sur A7
  13.   #define BPRst 10                      // Bouton de rst
  14.  
  15.   int etatBPRst = LOW;
  16.  
  17.   int ValueDAC;                         // Echelle : 0 -> 1023 points (analogWriteResolution(10)) pour 0 -> 3.3V
  18.   int a;                                // Curseur potentiomètre (varie de 0 à 3.3V pour 0 à 1023 points
  19.   int aa;
  20.   int R1 = 82;
  21.  
  22.   float ID1;                            // Variable courant LD calculé
  23.   float VCC5 = 5.08;                    // Tension d'alimentation fournie par la prise USB (A MESURER ET ACTUALISER DANS LE CODE POUR UNE PLUS GRANDE PRECISION)
  24.   float VCC3 = 3.32;                    // Tension d'alimentation fournie par le SEEEDUINO XIAO ((A MESURER ET ACTUALISER DANS LE CODE POUR UNE PLUS GRANDE PRECISION)
  25.   float R3V;                            // Résistance calculée pour une tension de 3.3V
  26.   float R5V;                            // Résistance calculée pour une tension de 5V
  27.   float R10V;                           // Résistance calculée pour une tension de 10V
  28.   float R12V;                           // Résistance calculée pour une tension de 12V
  29.   float R15V;                           // Résistance calculée pour une tension de 15V
  30.  
  31.   int VCpoint;                          // Valeur de VC en points
  32.   int VEpoint;                          // Valeur de VE en points
  33.  
  34.   float VC;                             // Valeur de VC en volts
  35.   float VE;                             // Valeur de VE en volts
  36.   float VD1;
  37.   float k = .5;                         // Les valeurs analogiques pouvant atteindre 5V sont divisées par deux via un pont diviseur
  38.  
  39.   void setup()
  40.   {
  41.  
  42.   analogReadResolution(10);             // Spécification résolution à utiliser pour la lecture ANA
  43.   analogWriteResolution(10);  
  44.   pinMode (BPRst, INPUT_PULLUP);        // BPRst en entrée pull up
  45.   ValueDAC = 0;                         // Initialisation à 0 de ValueDAC
  46.   a = 0;                                // Initialisation à 0 de a (curseur potentiomètre
  47.   aa = 0;
  48.   Serial.begin(115200);                   // ¨Préparation de la liaison série à 9600 bauds
  49.  
  50.   }
  51.  
  52.   void loop()
  53.   {
  54.  
  55.   VCpoint = analogRead (A8);            // Lecture en points de VC (affecté du coefficient k)
  56.   VEpoint = analogRead (A7);            // Lecture en points de VE (affecté du coefficient k)
  57.  
  58.   VC = VCC3 *VCpoint / 1023 /k ;        // Calcul de VC en volts
  59.   VE = VCC3 *VEpoint / 1023 /k ;        // Calcul de VE en volts
  60.  
  61.   VD1 = VCC5 - VC;                      // Calcul de VD1 en volts
  62.   ID1 = 1000*VE/R1;                     // Calcul de ID1 en mA        
  63.  
  64.   R3V = (3.3 - VD1) / ID1;              // Calcul de la résistance LED pour une tension de 3.3V
  65.   R5V = (5 - VD1) / ID1;                // Calcul de la résistance LED pour une tension de 5V
  66.   R10V = (10 - VD1) / ID1;              // Calcul de la résistance LED pour une tension de 10V
  67.   R12V = (12 - VD1) / ID1;              // Calcul de la résistance LED pour une tension de 12V
  68.   R15V = (15 - VD1) / ID1;              // Calcul de la résistance LED pour une tension de 15V
  69.  
  70.   a = analogRead (potVariationSignal);  // Lecture en points de la tension curseur du potentiomètre
  71.  
  72.  
  73.   // *********************** Type de réglage à choisir *******************************************************
  74.   // *********************************************************************************************************
  75.  
  76.      //ValueDAC = a;                       // Reglage grossier
  77.  
  78.      //ValueDAC = map(a,0,1023, 220,500);
  79.      //ValueDAC = map(a,0,1023, 220,600);
  80.      //ValueDAC = map(a,0,1023, 230,750);
  81.      
  82.       ValueDAC = map(a,0,1023, 190,800);
  83.  
  84.   // ====================================================================================================================
  85.   // Les lignes ci-dessus servent à déterminer la plage de de réglage, elles peuvent être modifiées selon vos préférences
  86.   // ====================================================================================================================
  87.  
  88.   // ********************************************************************************************************
  89.   // ********************************************************************************************************
  90.  
  91.   if ( (abs (aa - a)) >4 )
  92.   {
  93.  
  94.   analogWrite(BrocheDAC, ValueDAC);     // Positionnement de la dernière ValueDAC sur son port
  95.   delay(5);
  96.   Serial.println (" ");
  97.   Serial.println (" ");
  98.   Serial.println (" ");
  99.   Serial.println (" ");
  100.   Serial.println (" ");
  101.   Serial.println ("    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ");
  102.   Serial.println (" ");
  103.   Serial.println ("                                                                      LED");
  104.   Serial.println ("                                                                  CALCULATOR ");
  105.   Serial.println ("                                                                CLAUDE DUFOURMONT ");
  106.   Serial.println ("                                                          [email protected]");
  107.   Serial.println (" ");
  108.   Serial.println ("                                    visitez ma chaîne YouTube :  --->  https://www.youtube.com/c/ClaudeDufourmont ");
  109.   Serial.println (" ");
  110.   Serial.println ("                                             LIKEZ    -    SOUSCRIVEZ    -    PARTAGEZ    -    COMMENTEZ ");
  111.   Serial.println (" ");
  112.   Serial.println ("                              Ce montage a pour rôle de déterminer la résistance à placer en série avec une LED ");
  113.   Serial.println ("                              Après avoir déterminé le niveau de luminosité souhaité ");
  114.   Serial.println ("                              Ce niveau de luminosité est réglé à partir du potentiomètre ");
  115.   Serial.println ("                              Les valeurs de résistance sont données pour différentes valeurs de tension");
  116.   Serial.println (" ");
  117.   Serial.println ("    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ");
  118.   Serial.println ("    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ");
  119.   Serial.println ("");
  120.   Serial.println ("");
  121.   Serial.println ("");
  122.   Serial.print ("            VC (V) =           ");
  123.   Serial.print (VC);
  124.   Serial.println ("    Tension collecteur Transistor ");
  125.   Serial.print ("            VE (V) =           ");
  126.   Serial.print (VE);
  127.   Serial.println ("    Tension Emetteur Transistor ");
  128.   Serial.print ("            VD1 (V) =          ");
  129.   Serial.print (VD1);
  130.   Serial.println ("    Tension de seuil D1");
  131.   Serial.print ("            ID1 (mA) =         ");
  132.   Serial.print (ID1);
  133.   Serial.println ("    Courant D1 ");
  134.   Serial.print ("            R3V (Kohms) =      ");
  135.   Serial.print (R3V);
  136.   Serial.println ("    Valeur de résistance à placer en série avec la LED si le circuit R+LED est alimenté en 3.3V");
  137.   Serial.print ("            R5V (Kohms) =      ");
  138.   Serial.print (R5V);
  139.   Serial.println ("    Valeur de résistance à placer en série avec la LED si le circuit R+LED est alimenté en 5V");
  140.   Serial.print ("            R10V (Kohms) =     ");
  141.   Serial.print (R10V);
  142.   Serial.println ("    Valeur de résistance à placer en série avec la LED si le circuit R+LED est alimenté en 10V");
  143.   Serial.print ("            R12V (Kohms) =     ");
  144.   Serial.print (R12V);
  145.   Serial.println ("    Valeur de résistance à placer en série avec la LED si le circuit R+LED est alimenté en 12V");
  146.   Serial.print ("            R15V (Kohms) =     ");
  147.   Serial.print (R15V);
  148.   Serial.println ("    Valeur de résistance à placer en série avec la LED si le circuit R+LED est alimenté en 15V");
  149.   Serial.println (" ");
  150.   Serial.println (" ");
  151.   Serial.println (" ");
  152.   Serial.println ("    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ");
  153.   Serial.println (" ");
  154.   aa = a;
  155.   }
  156.  
  157.   digitalRead (BPRst);                  // Lecture de l'entrée numérique affectée à BPRst
  158.   if (digitalRead (BPRst) == LOW)      
  159.   {
  160.   etatBPRst = HIGH;                     // Détermination de son état
  161.   }
  162.   if (etatBPRst == HIGH)
  163.   {
  164.   NVIC_SystemReset();                   // RST logicielle si etatBPRst == HIGH
  165.   etatBPRst = LOW;                      // Remise à LOW de létatBPRst
  166.   }
  167.    
  168.   }
  169.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement