Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // Claude DUFOURMONT Le 09/04/2022
- // Générateur de fonction, c'est à dire générateur de signal dont la forme est réalisée à partir de segments de droite
- // Première partie : tracé de courbe
- // Deuxième partie : action potentiométrique
- //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- #define BrocheDAC A0 // Signal analogique en 0 / 3.3V
- #define potPinInterval A4 // RP1 10K ==> ATTENTION +Vcc = 3.3V et non pas 5V
- int ValueDAC; // Echelle : 0 -> 1023 points (analogWriteResolution(10)) pour 0 -> 3.3v
- #define BrocheLedGaucheTempo A2 // LED2 Bleue en série avec R12 valeur 33 ohms
- #define BrocheLedDroiteTempo A1 // LED1 Jaune en série avec R11 valeur 82 ohms
- float x;
- int y;
- void setup()
- {
- analogWrite(BrocheDAC, 0);
- int ValueDAC = 0;
- pinMode (BrocheLedGaucheTempo, OUTPUT);
- pinMode (BrocheLedDroiteTempo, OUTPUT);
- analogReadResolution(10); // Spécification résolution à utiliser pour la lecture ANA
- analogWriteResolution(10); // Spécification résolution à utiliser pour l'écriture ANA (DAC)
- digitalWrite (BrocheLedGaucheTempo, LOW); // Allumage LED bleue (bord droit zone1)
- digitalWrite (BrocheLedDroiteTempo, LOW); // Allumage LED jaune (bord gauche zone3) nota : si nous sommes en zone2 LED bleue et jaune allumées
- }
- void loop()
- {
- Serial.begin(115200);
- //courbe1(); // Fonction permettant de voir le tracé de la courbe de réponse à une rampe
- //courbe2(); // Fonction imaginaire Consigne de puissance de chauffage fonction de l'écart ConsigneTempérature - TempératureMesurée
- //courbe3(); // Fonction consigne descendante puis montante avec une bande morte entre les 2
- manuel(); // Fonction permettant de voir la réponse à une variation de tension (potentiomètre)
- }
- // ----------------------------------------------------------------- Fonction courbe1 DEBUT --------------------------------------------------------------------------
- void courbe1()
- {
- for (x = 0; x <=500; x++) // Pour la démo, la valeur de 500 est choisie pour avoir l'ensemble de la courbe sur le traceur série
- {
- if (x < 167) // 167 représente le 1/3 de la valeur maximale de x
- {
- y = map (x, 0, 166, 0,6); // Segment1 de 0 à 6 mn sur le 1er tiers du potentiomètre
- //digitalWrite (BrocheLedGaucheTempo, HIGH);
- //digitalWrite (BrocheLedDroiteTempo, LOW);
- Serial.println (y) ;
- ValueDAC = y;
- //Serial.println (ValueDAC) ;
- analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- if ( (x < 334) && (x > 166))
- {
- y = map (x, 167,333,6,60); // Segment2 de 6 à 60 mn sur le 2ème tiers du potentiomètre
- //digitalWrite (BrocheLedGaucheTempo, HIGH);
- //digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- ValueDAC = y;
- //Serial.println (ValueDAC) ;
- analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- if ( (x <501) && (x > 333))
- {
- y = map (x, 334,500,60,600); // Segment2 de 6 à 60 mn sur le 2ème tiers du potentiomètre
- //digitalWrite (BrocheLedGaucheTempo, LOW);
- //digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- ValueDAC = y;
- //Serial.println (ValueDAC) ;
- analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- }
- delay (10000);
- }
- // ------------------------------------------------------------------- Fonction courbe1 FIN --------------------------------------------------------------------------
- // ------------------------------------------------------------------ Fonction courbe2 DEBUT -------------------------------------------------------------------------
- void courbe2()
- {
- for (x = 0; x <=500; x++) // Pour la démo, la valeur de 500 est choisie pour avoir l'ensemble de la courbe sur le traceur série
- {
- if (x < 100) // 167 représente le 1/3 de la valeur maximale de x
- {
- y = map (x, 0, 100, 0,0); // Segment1
- //digitalWrite (BrocheLedGaucheTempo, HIGH);
- //digitalWrite (BrocheLedDroiteTempo, LOW);
- Serial.println (y) ;
- //ValueDAC = y*1023/500;
- //Serial.println (ValueDAC) ;
- //analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- if ( (x < 201) && (x > 100))
- {
- y = map (x, 101,200,100,100); // Segment2
- //digitalWrite (BrocheLedGaucheTempo, HIGH);
- //digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- //ValueDAC = y*1023/600;
- //Serial.println (ValueDAC) ;
- //analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- if ( (x <301) && (x > 200))
- {
- y = map (x, 201,300,100,300); // Segment3
- //digitalWrite (BrocheLedGaucheTempo, LOW);
- //digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- //ValueDAC = y*1023/600;
- //Serial.println (ValueDAC) ;
- //analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- if ( (x <401) && (x > 300))
- {
- y = map (x, 301,400,300,600); // Segment4
- //digitalWrite (BrocheLedGaucheTempo, LOW);
- //digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- //ValueDAC = y*1023/600;
- //Serial.println (ValueDAC) ;
- //analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- if ( (x <501) && (x > 400))
- {
- y = map (x, 401,500,600,1023); // Segment5
- //digitalWrite (BrocheLedGaucheTempo, LOW);
- //digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- //ValueDAC = y*1023/600;
- //Serial.println (ValueDAC) ;
- //analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- }
- delay (10000);
- }
- // -------------------------------------------------------------------- Fonction courbe2 FIN ----------------------------------------------------------------------------
- // ------------------------------------------------------------------- Fonction courbe3 DEBUT ---------------------------------------------------------------------------
- void courbe3()
- {
- for (x = 0; x <=500; x++) // Pour la démo, la valeur de 500 est choisie pour avoir l'ensemble de la courbe sur le traceur série
- {
- if (x < 100) //
- {
- y = map (x, 0, 100, 1023,1023); // Segment1
- //digitalWrite (BrocheLedGaucheTempo, HIGH);
- //digitalWrite (BrocheLedDroiteTempo, LOW);
- Serial.println (y) ;
- ValueDAC = y;
- //Serial.println (ValueDAC) ;
- //analogWrite(BrocheDAC, ValueDAC);delay (100);
- }
- if ( (x < 201) && (x > 100))
- {
- y = map (x, 101,200,1023,300); // Segment2
- //digitalWrite (BrocheLedGaucheTempo, HIGH);
- //digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- ValueDAC = y;
- //Serial.println (ValueDAC) ;
- //analogWrite(BrocheDAC, ValueDAC);delay (100);
- }
- if ( (x <301) && (x > 200))
- {
- y = map (x, 201,300,300,300); // Segment3
- //digitalWrite (BrocheLedGaucheTempo, LOW);
- //digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- ValueDAC = y;
- //Serial.println (ValueDAC) ;
- //analogWrite(BrocheDAC, ValueDAC);delay (100);
- }
- if ( (x <401) && (x > 300))
- {
- y = map (x, 301,400,300,1023); // Segment4
- //digitalWrite (BrocheLedGaucheTempo, LOW);
- //digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- ValueDAC = y;
- //Serial.println (ValueDAC) ;
- //analogWrite(BrocheDAC, ValueDAC);delay (100);
- }
- if ( (x <501) && (x > 400))
- {
- y = map (x, 401,500,1023,1023); // Segment5
- //digitalWrite (BrocheLedGaucheTempo, LOW);
- //digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- ValueDAC = y*1023/600;
- //Serial.println (ValueDAC) ;
- //analogWrite(BrocheDAC, ValueDAC);delay (100);
- }
- }
- delay (15000);
- }
- // ----------------------------------------------------------------- Fonction courbe3 FIN -----------------------------------------------------------------------------
- // ---------------------------------------------------- Fonction par action potentiométrique DEBUT --------------------------------------------------------------------
- void manuel()
- {
- x = 0;
- delay (5);
- x = analogRead (potPinInterval);
- if (x < 342) // 342 représente le 1/3 de la valeur maximale de x
- {
- y = map (x, 0, 341, 0,6); // Segment1 de 0 à 6 mn sur le 1er tiers du potentiomètre
- digitalWrite (BrocheLedGaucheTempo, HIGH);
- digitalWrite (BrocheLedDroiteTempo, LOW);
- Serial.println (y) ;
- ValueDAC = y;
- Serial.println (ValueDAC) ;
- analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- if ( (x < 683) && (x > 341))
- {
- y = map (x, 341,682,6,60); // Segment2 de 6 à 60 mn sur le 2ème tiers du potentiomètre
- digitalWrite (BrocheLedGaucheTempo, HIGH);
- digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- ValueDAC = y;
- //Serial.println (ValueDAC) ;
- analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- if ( (x <1024) && (x > 681))
- {
- y = map (x, 681,1024,60,600); // Segment2 de 6 à 60 mn sur le 2ème tiers du potentiomètre
- digitalWrite (BrocheLedGaucheTempo, LOW);
- digitalWrite (BrocheLedDroiteTempo, HIGH);
- Serial.println (y) ;
- ValueDAC = y;
- //Serial.println (ValueDAC) ;
- analogWrite(BrocheDAC, ValueDAC);
- //delay (100);
- }
- delay (5);
- }
- // ---------------------------------------- Fonction par action potentiométrique FIN --------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement