Tu m'as bien fait réfléchir nexen merci, je pense du coup avoir trouvé une solution mais je ne sais pas si c'est "juste" (rapport à la boucle while) donc je vais mieux vous expliquez.
Le robot est un robot arroseur de plante : lorsqu'une plante (dans un pot) à "soif" le pot s'allume et le robot est attiré par la lumière donc vas vers le pot mais si il y a des obstacles en chemin les capteurs ultrasons s'en charge. il y a également un capteur de pression sur le robot pour s’arrêter au contacte du pot et un capteur flotteur dans la cuve pour le niveau de l'eau.
Un morceaux du programme :
void loop() {
ValeurPress = digitalRead(captPress); //capteur pression pot/robot
ValeurNo = digitalRead(captNeau); //flotter
while( ValeurNo = LOW){ // tant que la cuve est pleine ...
ultrason(); //lecture capteur ultrasons
Photodiode(); //lecture capteur de lumière
PhotodiodeDEPCondition(); //le robot est attiré par la lumière grâce aux photodiode (déplacement vers lumière activé)
DepAléaoire(); //et le robot évite les obstacles grâce aux ultrasons (déplacement anti-obstacle activé)
if ( lightReadingCenter < lightToleranceOFFUS){ //si le robot s'approche trop près d'un pot il faut désactiver les ultrasons donc j'espere que quand cette condition s'éffectura elle ne prendra pas toujours en compte ultrason();
//si la lumière devient forte jusqu'à un certains seuil sur le capteur avant alors ....
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW); //stop
digitalWrite(in4, LOW);
delay(1500);
analogWrite(enA, 80); //réduire la vitesse
analogWrite(enB, 100);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW); // avance tout droit au ralenti av le contacte avec le pot
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
if ( ValeurPress = HIGH) {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(500);
ReceptionMéssage (); // arrosage (réception message pour connaitre les besoins en eau de la plante via onde radio capteur d'hygrométrie)
}
}
}
else {
digitalWrite(LED, HIGH); // elle signifie qu'il n'y a plus d'eau dans la cuve à l'utilisateur
}
} //je pense que le else est inutile (ou mal utilisé) le remplacer par un deuxieme while ?
Si il y à des fautes n'hésité pas et si vous n'avez pas bien cerner le problème également.
Je pense que cela demandera beaucoup d'attention de votre part et je vous en remercie d'avance =)