Мы пытаемся запустить код, который требует, чтобы RTC устанавливал тревогу в реальном времени, которая используется в RTC.
Мы пытались добавить код с веб-сайта arduino и других кодеров, но, похоже, ничего не работает и не исправляет ошибку.Код каким-то образом поврежден, и мы не знаем, где это исправить.В других случаях, которые мы пробовали, код работал отлично, и теперь внезапно он не работает.Подключения питания аккумулятора и RTC имеют питание и подачу напряжения на них.Код просто сломался, и я не знаю почему.Пожалуйста помоги!
// RTC setup
Wire.begin();
rtc.begin();
rtc.adjust(DateTime(__DATE__, __TIME__));
// sets date/time of RTC to time of compilation
rtc.armAlarm(1, false);
rtc.clearAlarm(1);
rtc.alarmInterrupt(1, false);
rtc.armAlarm(2, false);
rtc.clearAlarm(2);
rtc.alarmInterrupt(2, false);
rtc.writeSqwPinMode(DS3231_OFF);
sensors.requestTemperatures();
temp = sensors.getTempCByIndex(0);
temp = sensors.getTempCByIndex(0);
}
//note pull all other pins low to reduce consumption!
// ------------------- MAIN -------------------
void loop() {
if (bt_conn && !collecting) {
while (!getCommand());
// wait for a command to be processed
}
if (collecting) {
// This is run to put the device to sleep
DateTime curtime = rtc.now();
// get current time
Serial.println (curtime.minute());
rtc.setAlarm(ALM1_MATCH_HOURS, (curtime.minute() + 1) % 1,
(curtime.hour()) % 24, 0); // set wake up alarm
changed from 60 to 1 for trial runs**
rtc.alarmInterrupt(1, true);
attachInterrupt(digitalPinToInterrupt(RTCINT), rtcInt, LOW);
// enable interrupt for data collection
Serial.println("Alarm set for: " + String(curtime.hour()) + ":" +
String((curtime.minute() + 1) % 60));
bt.println("Alarm set for: " + String(curtime.hour()) + ":" +
String((curtime.minute() + 1) % 60));
waitForSerial();
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
// sleep until alarm wakes up the device
get_data = true;
detachInterrupt(digitalPinToInterrupt(RTCINT));
// remove alarm interrupt to prevent multiple calls
}
if (get_data) {
// when the device wakes up, get_data is True, enabling a one time
sample. This configuration prevents a bluetooth interrupt from triggering
a sample event
Serial.println("getting datapoint");
bt.println("bt: getting datapoint");
writeLine();
get_data = false;
}
}
Теоретически, этот код должен запускать время и устанавливать будильник для правильной даты и времени дня.