#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
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
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
"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".
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;
}
}