Advertisement
claudiusmarius

DFT107

Oct 17th, 2023
708
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. #include <TM1637Display.h>
  2.  
  3.   #define CLK1 D5
  4.   #define DIO1 D4
  5.  
  6.   TM1637Display display1(CLK1, DIO1);
  7.  
  8.   int MonInsensite = 0;
  9.   int LastMonInsensite = 0;
  10.   int PotentiometerFine = 0;
  11.   const int numReadings = 10; // Nombre d'échantillons pour la moyenne mobile
  12.   int readings[numReadings];  // Tableau pour stocker les échantillons
  13.   int readIndex = 0;         // Index de lecture dans le tableau
  14.   int total = 0;             // Somme des échantillons
  15.  
  16.   unsigned long lastUpdateTime = 0;
  17.   unsigned long updateInterval = 800; // Mettre ici la durée souhaitée en millisecondes
  18.  
  19.   void setup()
  20.   {
  21.   analogReadResolution(10);
  22.   display1.setBrightness(0x0A); // Luminosité maximale
  23.   analogWriteResolution(10); // Résolution du DAC (10 bits)
  24.   }
  25.  
  26.   void loop()
  27.   {
  28.   MonInsensite = analogRead(A6); // Potentiomètre principal
  29.   PotentiometerFine = analogRead(A7); // Potentiomètre "fin"
  30.  
  31.   // Limiter la plage du potentiomètre "fin" entre 0 et 1023
  32.   PotentiometerFine = constrain(PotentiometerFine, 0, 1023);
  33.  
  34.   // Ajuster la plage de la valeur lue du potentiomètre "fin" à -100 à +100
  35.   //PotentiometerFine = map(PotentiometerFine, 0, 1023, -100, 100);
  36.   PotentiometerFine = map(PotentiometerFine, 0, 1023, -30, 30);
  37.  
  38.   // Ajouter la valeur du potentiomètre "fin" à la valeur principale
  39.   int adjustedValue = MonInsensite + PotentiometerFine;
  40.  
  41.   // Assurer que la valeur affichée reste dans la plage 0-1000
  42.   int displayValue = constrain(adjustedValue, 0, 1000);
  43.  
  44.   // Mettre à jour le tableau des échantillons
  45.   total = total - readings[readIndex];
  46.   readings[readIndex] = displayValue;
  47.   total = total + readings[readIndex];
  48.   readIndex = (readIndex + 1) % numReadings;
  49.  
  50.   // Calculer la moyenne mobile
  51.   int averageValue = total / numReadings;
  52.  
  53.   // Limiter la plage de averageValue entre 0 et 1023
  54.   averageValue = constrain(averageValue, 0, 1023);
  55.  
  56.   unsigned long currentTime = millis();
  57.  
  58.   // Mettre à jour l'affichage uniquement si la valeur change significativement
  59.   if (abs(averageValue - LastMonInsensite) > 2)
  60.   {
  61.   display1.showNumberDec(displayValue, false, 4, 0); // Afficher la valeur ajustée
  62.   LastMonInsensite = averageValue;
  63.   lastUpdateTime = currentTime;
  64.   }
  65.  
  66.   // Mettre à jour le DAC pour générer une tension proportionnelle
  67.   // en fonction de la valeur de MonInsensite (0-1023)
  68.   //analogWrite(A0, map(displayValue, 0, 1000, 0, 1023)); // Mettre à jour la sortie DAC
  69.   analogWrite(A0, map(displayValue, 0, 1000, 0, 975)); // Mettre à jour la sortie DAC et ajustement pour tenir compte des incerrtitudes et tolérances
  70.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement