Bonjour,
Après des semaines de lutte pour essayer de faire mon programme, je me résous à demander de l'aide ici.
J'ai parcouru forum et forum, ceci est ma dernière solution.
Contexte : Je suis un élève de terminale et je fais un projet, je ne suis pas très doué avec l'arduino mais j'en ai besoin. Je crée un système de plantes qui s'arrose toute seule en fonction de l'humidité grâce a un arduino, des capteurs, et une batterie.
Matériel : J'utilise un arduino uno r3 avec le module baseshield. J'essaye de brancher un RTC DS3231 à ce dernier.
Problématique : J'ai besoin de mettre en vielle mon arduino et de le réveiller chaque "tel heure" de la journée pendant 5 secondes. J'ai trouvé un code sur internet que j'ai modifié, j'essaye j'essaye je modifie encore et encore mais rien y fait et je n'arrive toujours pas à mettre en vielle mon arduino.
C'est pour ça que je demande votre aide, afin de comprendre pourquoi ça ne marche pas.
Voici le code en question, j'en comprends une partie mais pas la totalité.
#include <RTClibExtended.h>
#include <LowPower.h>
#include "wire.h"
#define wakePin 2
#define ledPin 13
RTC_DS3231 RTC;
byte AlarmFlag = 0;
byte ledStatus = 1;
void wakeUp()
{
}
void setup() {
// put your setup code here, to run once:
pinMode(wakePin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
delay(1000);
Wire.begin();
RTC.begin();
RTC.adjust(DateTime(__DATE__, __TIME__));
RTC.armAlarm(1, false);
RTC.clearAlarm(1);
RTC.alarmInterrupt(1, false);
RTC.armAlarm(2, false);
RTC.clearAlarm(2);
RTC.alarmInterrupt(2, false);
RTC.armAlarm(3, false);
RTC.clearAlarm(3);
RTC.alarmInterrupt(3, false);
RTC.writeSqwPinMode(DS3231_OFF);
RTC.setAlarm(ALM1_MATCH_HOURS, 50, 8, 0);
RTC.alarmInterrupt(1, true);
}
void loop() {
// put your main code here, to run repeatedly:
if (AlarmFlag == 0) {
attachInterrupt(0, wakeUp, LOW);
digitalWrite(ledPin, LOW);
ledStatus = 0;
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
detachInterrupt(0);
//When exiting the sleep mode we clear the alarm
RTC.armAlarm(1, false);
RTC.clearAlarm(1);
RTC.alarmInterrupt(1, false);
AlarmFlag++;
}
if (ledStatus == 0) {
ledStatus = 1;
digitalWrite(ledPin, HIGH);
}
else {
ledStatus = 0;
digitalWrite(ledPin, LOW);
}
delay(5000);
}