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.