Montage de la maquette du château d’eau

Sketch arduino pour étalonner le capteur de niveau de la maquette du château d’eau

Montage

Sortie série

Code à téléverser

/** * etalonnage.ino * Ce sketch allume la pompe au maximum lorsqu'on appuie sur le bouton * Il affiche la valeur de la tension aux bornes du capteur * * En lisant au moins deux hauteurs différentes sur la graduation on peut déterminer a et b * de la relation affine : hauteur (mm) = a × tension (V) + b */ // 1. Déclarations des constantes et variables globales // Capteur de pression const byte PRESSURE_SENSOR_PIN = A0; // Capteur Pin1 A0, Pin2 GND et Pin3 5 V. // Module de puissance const byte PWM_PIN = 11; // Module de puissance entre GND et PIN11 // Bouton const byte BUTTON_PIN = 2; // Bouton entre GND et PIN2 // 2. Setup − Exécuté une seule fois void setup() { // Fixe la vitesse de communication entre arduino et le PC Serial.begin(9600); // Configuration du module de puissance TCCR2B = (TCCR2B & 0b11111000) | 0x07; // Fréquence PWM = 30 Hz pinMode(PWM_PIN, OUTPUT); // Broche PWM_PIN parametrée en sortie // Configuration du bouton pinMode(BUTTON_PIN, INPUT_PULLUP); // Évite une valeur indéterminée lorsque le bouton n’est pas pressé (Force à la valeur 5 V - HIGH) } // 3. Loop − Variables recréées à chaque boucle void loop() { // Calcul de la tension int pressureSensorRawValue = averageAnalogRead(PRESSURE_SENSOR_PIN, 30); // Moyenne de 30 valeurs entre 0 et 1023 float pressureSensorVoltage = pressureSensorRawValue * 5.0 / 1023.0; // Valeur de la tension en volts // Le bouton commande la pompe lorsqu’on appuie dessus bool buttonPressed = (digitalRead(BUTTON_PIN) == LOW); // Vaut TRUE lorsque le bouton est pressé (0 V - LOW) if (buttonPressed) { analogWrite(PWM_PIN, 255); // PWM au max } else { analogWrite(PWM_PIN, 0); // PWM éteint } // Affichage de la tension aux bornes du capteur Serial.println(pressureSensorVoltage,3); // Trois décimales // On attend une demi seconde delay(500); // Augmenter le delay diminue la réactivité du bouton } // 4. Fonctions − Variables locales /* Cette fonction effectue une moyenne sur les sampleCount valeurs renvoyées par analogRead(pin) */ int averageAnalogRead(byte pin, byte sampleCount) { long sum = 0; for(byte i = 0; i < sampleCount; i++){ sum = sum + analogRead(pin); } return sum / sampleCount; }