WDT ARDUINO

Bonjour,
Je m'appelle Valentin, j'ai 17 ans? je sui débutant en électronique et programmation et je suis en train de terminer mon poulailler autonome et automatique. Mais avant cela, j'ai un petit problème : mon système, étant autonome en énergie, fonctionne sur batterie, rechargée par un panneau solaire. Pour conserver un maximum de charge et assurer la levée/baisse de ma trappe de poulailler, il faut réduire la consommation de l'Arduino (Uno). J'ai donc adapté un code sur mon programme avec le WDT...mais qui ne fonctionne pas…!!! Pourriez-vous m'aider s'il vous plaît ? Je vous met le code ci-dessous :
Bonne journée
Valentin

SYSTEME_POULES_OFFICIEL.ino (3.44 KB)

Bonjour

Fichier .ino joint = fichier 'caché' pour les utilisateurs de plus en plus nombreux de tablettes et smartphones. C'est pratiquement inexploitable au quotidien.

Voir la Regle du forum pour la publication 'balisée' du code dans le corps du message.

J'utilise ceci : GitHub - rocketscream/Low-Power: Low Power Library for Arduino

Il y a des exemples.

Il faut savoir aussi qu'une UNO n'est pas l'idéal pour faire du low-power.
Elle va consommer 6mA au lieu de 11mA.

Une PRO MINI consommera 1.4mA, ce qui est déjà mieux.
Voir consommation-dune-carte-arduino

Et si on la bricole un peu : 1.5µA !

Bonjour,
Tout d'abord, merci pour vos réponses. Je suis désolé pour le programme… Voici :

int analogPin=5;
int analogValue=0;
int ledPin=8;
int led2Pin=5;
int ouvert=0;
int ferme=0;
const int switchPin1 = 3;
const int switchPin2 = 13;


void setup() {

   //WDT SETUP
WDTCSR = (24);
WDTCSR = (33);
WDTCSR |= (1 << 6);

  Serial.begin(9600);
  pinMode(ledPin,OUTPUT);
  pinMode(led2Pin,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(9,OUTPUT);

  pinMode(switchPin1, INPUT); 
  digitalWrite(switchPin1, HIGH);
  pinMode(switchPin2, INPUT); 
  digitalWrite(switchPin2, HIGH);

  for(int i=0; i<20; i++){
    pinMode(i, OUTPUT);
  }

  ADCSRA &= ~(1 << 7);
  //ENABLE SLEEP
  SMCR |= (1 << 2); // power down mode
  SMCR |= 1; //enable sleep 
}


void baisser_trappe(){
   digitalWrite(12,LOW);
   digitalWrite(9,LOW);
   analogWrite(3,255);
}


void lever_trappe(){
   digitalWrite(12,HIGH);
   digitalWrite(9,LOW);
   analogWrite(3,255);
}


void arreter(){
   digitalWrite(9, HIGH);
   delay(10000);
}


void dodo(){
  for(int i=0; i<2; i++){   // environ 16 sec de pause !!
      MCUCR |= (3 << 5);
      MCUCR = (MCUCR & ~(1 << 5)) | (1 << 6);
      __asm__  __volatile__("sleep");
      delay(1000);
   
   }
}

void loop() {
   analogValue=analogRead(analogPin);
   Serial.println(analogValue);
      
  if (analogValue > 20){
    
    while (ouvert != 0){
       lever_trappe();
       
       if (digitalRead(switchPin1) == LOW){
          digitalWrite(ledPin,LOW);
          arreter();
          ouvert=1;
          ferme=0;

    }else{
        dodo();
  }
 }
}

   else{
    
    while (ferme != 0){
       baisser_trappe();
       digitalWrite(ledPin,HIGH);
       digitalWrite(led2Pin, HIGH);
       delay(500);
       digitalWrite(ledPin,LOW);
       digitalWrite(led2Pin, LOW);
       delay(500);
          
       if (digitalRead(switchPin2)== LOW){
          arreter();
          digitalWrite(ledPin, HIGH);
          ouvert=0;
          ferme=1;

    }else{
        dodo();
   }
  }
 }
}

void digitalInterrupt(){
  
}

ISR(WDT_vect){
} //WDT interrupt

J'ai également pensé à utiliser un Arduino plus petit mais, le fait est que j'utilise un shield moteur pour REV3 et donc, qui n'est pas compatible avec ce genre de carte… De plus, j'ai tout à fait conscience que le fait d'utiliser ce genre de carte n'est pas du tout adapté mais le but de ce projet est également de me familiariser avec l'environnement Arduino !!

Essaie la librairie Low-Power.