Je me permet encore de te solliciter ![]()
J'ai bien adapté ton code et cela fonctionne très bien.. j'ai juste ajouté un 2° appuie pendant le mode auto afin d'arreter la fonction auto (au cas ou..)
mais le break ne semble pas etre la solution.. c'est mes yeux ou bien ?
byte buttonPin = 4;
byte ledPin = 13;
unsigned long tempo = 0;
int dureMoteur1 = 4000;
void setup()
{
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("Les croquettes aux touftoufs !");
Serial.println("V 1.0!");
Serial.println();
digitalWrite(ledPin,LOW);
}
///////////////////////////
// Fonctions du programme
//////////////////////////
void FunctionMarcheManu()
{
digitalWrite(ledPin,HIGH) ;
Serial.println("Fonction moteur Manu");//on allume le moteur
}
void FunctionMarcheAuto()
{
digitalWrite(ledPin,HIGH) ;
Serial.println("Fonction moteur Auto");//on allume le moteur
}
//////////
// boucle
//////////
void loop()
{
if (digitalRead(buttonPin) == LOW) //si BP appuye
{
delay(200); //on filtre les rebonds
tempo=millis(); //on demarre la tempo
while (digitalRead(buttonPin) == LOW) //tant que le BP est appuye
{ //on mesure la durée de l'appui
if ((millis()-tempo)>500 ) //si la duree est > que 500 ms
{
FunctionMarcheManu();
} //marche manuelle
} //dès que le BP est relache
digitalWrite(ledPin,LOW); //on stoppe le moteur
Serial.println("Fin de Fonction moteur Manu");
if ((millis()-tempo)<500 ) //si la durée était < 500ms
{
tempo=millis(); //on reinitialise la tempo
while((millis()-tempo)< dureMoteur1) //tant qu'il ne s'est pas écoule durée Moteur 1
{
FunctionMarcheAuto();
// stop si 2°eme appuye sur le bouton
if (digitalRead(buttonPin) == LOW)
{
digitalWrite(ledPin,LOW) ;
break;
}
}
digitalWrite(ledPin,LOW) ; //puis on le stoppe
Serial.println("Fin de Fonction moteur auto");
}
}
}
suis enore preneur de ton avis !