разрабатывал я часы на любимом всеми TM1637, идея была такой
Вначале мы загружаем время на rtc, после кидаем на ИП и убираем на полочку
Как в теории должно было работать
Основная проблема скорее всего в таймере, ибо сон я тут вынес в отдельный таймер, но не пин не выключается, не ардуина в сон не идёт, но прошерстив документацию я ничего не нашел, надеюсь, вы поможете
Помогите пожалуйста, ибо тут я уже попытался вывести питание на цифровой порт, и просто его выключать, но это не сработало, так ещё и сон что-то неработает,
Вначале мы загружаем время на rtc, после кидаем на ИП и убираем на полочку
Как в теории должно было работать
- Ардуина спит
- делаем прерывание по кнопке
- выводим время на дисплей около 3 секунд
- сон ардуины
C++:
#include <microDS3231.h>
#include <GyverPower.h>
#include "GyverTM1637.h"
#include "GyverTimer.h" // подключаем библиотеку
#define BUT 5
#define clock 5
#define pup_del 500
#define CLK 4
#define DIO 3
#define cycle_pup 6
GyverTM1637 disp(CLK, DIO);
MicroDS3231 rtc;
GTimer myTimer(MS);
void setup() {
rtc.setTime(COMPILE_TIME);
power.autoCalibrate();
power.setSleepMode(POWERDOWN_SLEEP);
attachInterrupt(0, wakeup, RISING);
disp.clear(); // очистить
disp.brightness(7); // яркость 0-7
pinMode(BUT, INPUT_PULLUP);
pinMode(clock, OUTPUT);
}
void loop() {
digitalWrite(clock, HIGH);
myTimer.setTimeout(3000);
disp.displayClock(rtc.getHours(), rtc.getMinutes()); // вывести часы и минуты
pup();
if (myTimer.isReady()) {
digitalWrite(clock, LOW);
power.sleep(SLEEP_FOREVER);
}
}
void wakeup() {
}
void pup() {
for(int i; i < pup_cycle; i++){
disp.point(0);
delay(pup_del);
disp.point(1);
delay(pup_del);
}
}
Помогите пожалуйста, ибо тут я уже попытался вывести питание на цифровой порт, и просто его выключать, но это не сработало, так ещё и сон что-то неработает,