Merci maintenant les boucles marchent mais j'ai modifié le programme pour pouvoir le contrôler manuellement le servo moteur à l'aide d'un potentiomètre mais maintenant le soucis est que quand je bascule d'un mode à l'autre le servo tremble
#include <Servo.h>
#include "OneButton.h"
bool prog1=(1==0);// initialise à faux
bool prog2=(1==0);
int port = A0;
OneButton button(4, true);
int valeur = 0;
float vin = 0;
int led = 2;
int led1= 3;
int potpin = 5; // déclare le potentiomètre sur la PIN analogique 0.
int val;
Servo monServomoteur;
void setup(){
Serial.begin(115200); // on peut transmettre assez vite sans bloquer
pinMode(led,OUTPUT);
monServomoteur.attach(9);
button.attachClick(singleclick);
button.attachLongPressStop(longclick);
}
void loop(){
button.tick(); // check the status of the button
delay(10);
if (prog1) {
// a short wait between checking the button
// Lit l'entrée analogique A0
valeur = analogRead(port);
// convertit l'entrée en volt
vin = (valeur * 5.0) / 1024.0;
Serial.println(vin);
if (vin <3.5)
{digitalWrite(led,HIGH);
monServomoteur.write(179);
} else {
digitalWrite(led,LOW);
monServomoteur.write(0);
}
delay(200); // il faut que l'on reste capable de scruter le bouton avec un delai raisonnable
}
if (prog2) {val = analogRead(potpin); // lit la valeur du potentiomètre qui est comprise entre 0 et 1023 (car le potentiomètre est analogique)
val = map(val, 0, 1023, 0, 180); // permet de mettre à l'échelle la valeur du potentiomètre pour qu'il passe de 0 à 1023 (analogique) à 0 à 180 (degrés)
// en d'autres termes adapte le potentiomètre qui lit des valeurs de 0 à 1023, en degrés pour permettre de faire de 0 à 180 degrés
monServomoteur.write(val); // positionne le servomoteur en fonction de la valeur du potentiomètre.
delay(15);
}
}
void singleclick(){ // what happens when the button is clicke
prog1 = (1 == 1);
digitalWrite(led1,LOW);
}
void longclick(){ // what happens when buton is long-pressed
prog1 = (1==0);
prog2 = (1 ==1);
digitalWrite(led1,HIGH); // light the blue LED
}