probleme code

Bonjour j'ai un problème avec un code

#include <avr/sleep.h>

#include <avr/power.h>

#include <Time.h>

#include <DS3232RTC.h>

#include <Wire.h>


int interrupt2 = 2;

int led = 5;

boolean reveille = 0;

void r()

{

  detachInterrupt(0);

}

void setup()

{

  Serial.begin(9600);

  pinMode(interrupt2, INPUT);

  pinMode(led, OUTPUT);

}

int scs = 0;

void loop()
{

    RTC.setAlarm(ALM1_MATCH_HOURS, 0, 49, 16, dowFriday);// leur a laquelle le int du RTC 

    //fait une interruption 

    RTC.alarmInterrupt(ALARM_1, true);// declare au RTC de faire une interuption

   // sur pin 2 

 scs++;

    Serial.print("s'endore");

    Serial.println(scs, DEC);

    delay(1000);

  if(scs == 3)

  {

    Serial.println("dort profondement");

    scs = 0;

    attachInterrupt(0,r,LOW);

    delay(100);

    set_sleep_mode(SLEEP_MODE_PWR_DOWN);// le mode choisie pour le sommeil

    sleep_enable();

    sleep_mode();

    reveille = 1; // met reveille en 1 pour les instructions en bas 

    sleep_disable();
    }

   if( reveille = 1) //les instructions  apres le reville 

  {
       digitalWrite(led, HIGH);

       delay(2000);

       reveille = 0;
  }
}

les secondes s' accumule pour les serial print à la place de 1 seconde il y en a 3 par s' endore
et la led ne veut pas s'allumer j'ai essayé tout les moyens

Pouriez vous m'aider s'il vous plait

bonjour,
déjà y a un soucis ici

if( reveille = 1)

ca devrait être

if( reveille == 1)

après tu mets

if(scs == 3)

  {

    Serial.println("dort profondement");

    scs = 0;

donc il considère toujours scs=0
il faudrait le mettre dans

 if( reveille = 1) //les instructions  apres le reville 

  {
       digitalWrite(led, HIGH);

       delay(2000);

       reveille = 0;
scs=0;
  }

D'accord merci de la réponse je vais essayer

Le code marche correctement
Mais quelqu'un connaît t'il la librairie que j'ai utilisé car je ne suis pas sure que cette fonction RTC.alarmInterrupt();

Elle sort d'où ta librairie?

Voilà la librairie

c'est marqué en bas de page

alarmInterrupt(byte alarmNumber, boolean alarmEnabled)
Description

Enable or disable an alarm "interrupt". Note that this "interrupt" causes the RTC's INT pin to be asserted. To use this signal as an actual interrupt to a microcontroller, it will need to be connected properly and programmed in the application firmware. on the RTC.
Syntax

RTC.alarmInterrupt(alarmNumber, enable);
Parameters

alarmNumber: The number of the alarm to enable or disable, ALARM_1 or ALARM_2 (byte)
alarmEnabled: true or false (boolean)
Returns

None.
Example

RTC.alarmInterrupt(ALARM_1, true); //assert the INT pin when Alarm1 occurs.
RTC.alarmInterrupt(ALARM_2, false); //disable Alarm2

Pourriez-vous traduire car je n'ai pas bien compris

en gros, ca veut dire
active/désactive une interrupt de l'alarme
l'interrupt est en relation avec la pin RTC INT attribuée
ca doit être cablé correctement

donc ALARM_1 doit être configuré sur une pin

Oui mais cela ne marche pas je ne comprends pas

ca aide pas beaucoup :wink:
jète un oeil

Ce qui veut dire que je devrait mettre ça

RTC.setAlarm();

RTC.alarm();

RTC.alarmInterrupt();

A la place de ça

RTC.setAlarm();
RTC.alarmInterrupt();

Dans la page que vous m'avez donné il parle de nettoyer le drapeau mais ça veut dire quoi
PS: mon code est t'il bon avec ce que j'ai
Mît en haut

"nettoyer le drapeau" ressemble à une traduction littérale de "clear the flag"...

Un flag est un variable "binaire" (1 ou 0) qui sert à déclencher une action particulière... un fois l'action passée, il faut remettre la variable à 0... et c'est ça "clear the flag".

alors y a t'il u sens à mettre cette fonction dans mon code plus haut

RTC.alarm();

mets tout ton code histoire de vérifier un peu mieux.
déjà est ce que ca fonctionne ou non ce que tu as fait?

Le code du début je ne crois pas qu'il marche sinon celui du début c'est

#include <avr/sleep.h>

#include <avr/power.h>

#include <Time.h>

#include <DS3232RTC.h>

#include <Wire.h>


int interrupt2 = 2;

int led = 5;

boolean reveille = 0;

void r()

{

  detachInterrupt(0);

}

void setup()

{

  Serial.begin(9600);

  pinMode(interrupt2, INPUT);

  pinMode(led, OUTPUT);

}

int scs = 0;

void loop()
{

    RTC.setAlarm(ALM1_MATCH_HOURS, 0, 49, 16, dowFriday);// leur a laquelle le int du RTC 

    //fait une interruption 

    RTC.alarmInterrupt(ALARM_1, true);// declare au RTC de faire une interuption

   // sur pin 2 

 scs++;

    Serial.print("s'endore");

    Serial.println(scs, DEC);

    delay(1000);

  if(scs == 3)

  {

    Serial.println("dort profondement");

    scs = 0;

    attachInterrupt(0,r,LOW);

    delay(100);

    set_sleep_mode(SLEEP_MODE_PWR_DOWN);// le mode choisie pour le sommeil

    sleep_enable();

    sleep_mode();

    reveille = 1; // met reveille en 1 pour les instructions en bas 

    sleep_disable();
    }

   if( reveille = 1) //les instructions  apres le reville 

  {
       digitalWrite(led, HIGH);

       delay(2000);

       reveille = 0;
  }
}

Et celui que cela donnerait

#include <avr/sleep.h>

#include <avr/power.h>

#include <Time.h>

#include <DS3232RTC.h>

#include <Wire.h>


int interrupt2 = 2;

int led = 5;

boolean reveille = 0;

void r()

{

  detachInterrupt(0);

}

void setup()

{

  Serial.begin(9600);

  pinMode(interrupt2, INPUT);

  pinMode(led, OUTPUT);

}

int scs = 0;

void loop()
{

    RTC.setAlarm(ALM1_MATCH_HOURS, 0, 49, 16, dowFriday);// leur a laquelle le int du RTC 

    //fait une interruption 
RTC.alarm(ALARM_1);

    RTC.alarmInterrupt(ALARM_1, true);// declare au RTC de faire une interuption

   // sur pin 2 

 scs++;

    Serial.print("s'endore");

    Serial.println(scs, DEC);

    delay(1000);

  if(scs == 3)

  {

    Serial.println("dort profondement");

    scs = 0;

    attachInterrupt(0,r,LOW);

    delay(100);

    set_sleep_mode(SLEEP_MODE_PWR_DOWN);// le mode choisie pour le sommeil

    sleep_enable();

    sleep_mode();

    reveille = 1; // met reveille en 1 pour les instructions en bas 

    sleep_disable();
    }

   if( reveille = 1) //les instructions  apres le reville 

  {
       digitalWrite(led, HIGH);

       delay(2000);

       reveille = 0;
  }
}
if( reveille = 1)

Non ça je les régler mais pensez-vous que cela marchera