Distributeur automatique de croquettes

Bonjour, je suis en train d'essayer de fabriquer un distributeur automatique de croquettes constitué d'un servomoteur et d'un bouton-poussoir. Le but de ce projet est de distribuer des croquettes toutes les heures(3600000 ms) ou alors d'appuyer sur un bouton-poussoir. La partie du code avec le bouton-poussoir marche parfaitement, mon problème se trouve dans la partie automatique si je teste avec un délai de 30 secondes (servodelay=30000) le système marche par contre lorsque je mets 5 minutes ou 1 heure cela ne marche plus. Merci d'avance pour votre aide et bonne journée.

code:

#include <Servo.h>
Servo myservo;
int servodelay = 3600000; //le delay de déclanchement
long premillis = 0;
const byte bp = 2 ;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  myservo.attach(8);
  myservo.write(0);
  pinMode(bp, INPUT_PULLUP);

}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println(millis());
  Serial.println(premillis);
  
  //partie automatique
  if(millis() - premillis > servodelay){
    myservo.write(179);
    delay(10000);
    myservo.write(0);
    delay(1000);
    premillis = millis();
  }
    //partie avec le bouton poussoir
    if (digitalRead(bp) == LOW) {
    myservo.write(179);
    delay(10000);
    myservo.write(0);
    delay(1000);
    premillis = millis();
  }

}

câblage:

quelle est la valeur maximale représentable sur un int sur un UNO?
indice= int - Arduino Reference

bonjour
Le comportement du programme est normal !
telle que tu l'a défini la variable servodelay est limitée entre -32,768 et 32,767
Je te laisse chercher et corriger

j'avais répondu avant avec un peu plus d'info... il a donc un gros indice :slight_smile:

J'ai vu aprés avoir posté
(HS l'ancien forum prévenais qu'une reponse etait intervenue pendant votre redaction)

Je ne savais pas merci beaucoup.

Très bien merci.

prenez l'habitude de toujours utiliser des unsigned long quand vous gérez le temps, ça évite des soucis