Et j enquille avec ma question posée sur Bla², dans ce code :
CODE :
void alarme()
{
digitalWrite(lcdlum, HIGH); // allume l eclairage du lcd
lcd.setCursor(0, 1); // place le curseur sur la deuxieme ligne
lcd.print(" a table !!!!"); // parce qu on est poli aussi avec les chats
delay (500);
tone(6, 960, 200);
digitalWrite(moteur, HIGH); // fait tourner le cylindre 8 secondes
delay (5000);
lcd.setCursor(0, 1);
lcd.print(" "); // efface la deuxieme ligne
buttonState = digitalRead(bouton); // lecture de l etat du capteur de croquettes
if (buttonState == HIGH) // si il n y a pas asses de croquettes,alors :
{
digitalWrite(moteur, LOW); // arrete le cylindre
servo.write(90); // servo en position ouvert
delay (500); // attente de 500 millis
digitalWrite(lcdlum, LOW); // eteind l eclairage du lcd
}
else // si il n y a asses de croquettes , alors :
{
servo.write(178); // servo en position ferme
tone(6, 880, 500); // genere une frequence de 880 hertz de 500 millis sur le pin 6
delay (3000);
}
buttonState = digitalRead(bouton); // lecture de l etat du capteur de croquettes
if (buttonState == HIGH) // si il n y a pas asses de croquettes,alors :
{
digitalWrite(moteur, LOW); // arrete le cylindre
servo.write(90); // servo en position ouvert
delay (500); // attente de 500 millis
digitalWrite(lcdlum, LOW); // eteind l eclairage du lcd
}
else // si il n y a asses de croquettes , alors :
{
servo.write(178); // servo en position ferme
tone(6, 880, 500); // genere une frequence de 880 hertz de 500 millis sur le pin 6
delay(500); // attente 500 millis
tone(6, 440, 500); // genere une frequence de 440 hertz de 500 millis sur le pin 6
delay(500); // attente 500 millis
}
buttonState = digitalRead(bouton); // lecture de l etat du capteur de croquettes
if (buttonState == HIGH) // si il n y a pas asses de croquettes,alors :
{
digitalWrite(moteur, LOW); // arrete le cylindre
servo.write(90); // servo en position ouvert
delay (500); // attente de 500 millis
digitalWrite(lcdlum, LOW); // eteind l eclairage du lcd
}
else // si il n y a asses de croquettes , alors :
{
servo.write(178); // servo en position ferme
delay (500); // attente 500 millis
tone(6, 880, 500); // genere une frequence de 880 hertz de 500 millis sur le pin 6
delay(500); // attente 500 millis
tone(6, 440, 500); // genere une frequence de 440 hertz de 500 millis sur le pin 6
delay(500); // attente 500 millis
tone(6, 880, 500); // genere une frequence de 880 hertz de 500 millis sur le pin 6
delay(500);
}
digitalWrite(moteur, LOW); // arrete le cylindre
digitalWrite(lcdlum, LOW); // eteind l eclairage du lcd
}
J aimerais remplacer mes if par des while.
Car pour par exemple 3 seconde de cylindre qui tourne, je n aurai pas la même quantité de croquette en début et fin de cylindre.
C est pour ça aussi que j ai mis 3 if a la suite car quand le cylindre est pleins, le tube est remplis (voir même trop) au premier if et vers la fin de vie du cylindre il est remplis ( le tube) a la fin du dernier if.
Mais comme dit plus tôt, dans mon while il faut attendre 300ms d état haut sur le capteur optique pour ouvrir le tube.
Si ce délais n est pas la, le tube s ouvre des qu il voit passer une croquette.