Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <TM1637Display.h>
- #define CLK1 D5
- #define DIO1 D4
- TM1637Display display1(CLK1, DIO1);
- int MonInsensite = 0;
- int LastMonInsensite = 0;
- int PotentiometerFine = 0;
- const int numReadings = 10; // Nombre d'échantillons pour la moyenne mobile
- int readings[numReadings]; // Tableau pour stocker les échantillons
- int readIndex = 0; // Index de lecture dans le tableau
- int total = 0; // Somme des échantillons
- unsigned long lastUpdateTime = 0;
- unsigned long updateInterval = 800; // Mettre ici la durée souhaitée en millisecondes
- void setup()
- {
- analogReadResolution(10);
- display1.setBrightness(0x0A); // Luminosité maximale
- analogWriteResolution(10); // Résolution du DAC (10 bits)
- }
- void loop()
- {
- MonInsensite = analogRead(A6); // Potentiomètre principal
- PotentiometerFine = analogRead(A7); // Potentiomètre "fin"
- // Limiter la plage du potentiomètre "fin" entre 0 et 1023
- PotentiometerFine = constrain(PotentiometerFine, 0, 1023);
- // Ajuster la plage de la valeur lue du potentiomètre "fin" à -100 à +100
- //PotentiometerFine = map(PotentiometerFine, 0, 1023, -100, 100);
- PotentiometerFine = map(PotentiometerFine, 0, 1023, -30, 30);
- // Ajouter la valeur du potentiomètre "fin" à la valeur principale
- int adjustedValue = MonInsensite + PotentiometerFine;
- // Assurer que la valeur affichée reste dans la plage 0-1000
- int displayValue = constrain(adjustedValue, 0, 1000);
- // Mettre à jour le tableau des échantillons
- total = total - readings[readIndex];
- readings[readIndex] = displayValue;
- total = total + readings[readIndex];
- readIndex = (readIndex + 1) % numReadings;
- // Calculer la moyenne mobile
- int averageValue = total / numReadings;
- // Limiter la plage de averageValue entre 0 et 1023
- averageValue = constrain(averageValue, 0, 1023);
- unsigned long currentTime = millis();
- // Mettre à jour l'affichage uniquement si la valeur change significativement
- if (abs(averageValue - LastMonInsensite) > 2)
- {
- display1.showNumberDec(displayValue, false, 4, 0); // Afficher la valeur ajustée
- LastMonInsensite = averageValue;
- lastUpdateTime = currentTime;
- }
- // Mettre à jour le DAC pour générer une tension proportionnelle
- // en fonction de la valeur de MonInsensite (0-1023)
- //analogWrite(A0, map(displayValue, 0, 1000, 0, 1023)); // Mettre à jour la sortie DAC
- analogWrite(A0, map(displayValue, 0, 1000, 0, 975)); // Mettre à jour la sortie DAC et ajustement pour tenir compte des incerrtitudes et tolérances
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement