Берёшь арудино, датчик наклона и две пальчиковые батарейки (или аккумулятор 18650. Главное, чтобы было больше 2.5 вольт). Паяешь как указано, убираешь светодиод питания. Приматываешь на банку с таблетками. Подключаешь последовательно батарейки.
Горит красная лампочка? Ты забыл выпить таблетки. Не горит красная лампочка? Через 20 часов снова загорит.
C++:
#include <GyverPower.h>
#include <powerConstants.h>
long timePassed = 0;
long timerStart = -72000000;
void setup() {
power.setSystemPrescaler(PRESCALER_2);
// put your setup code here, to run once:
Serial.begin(9600);
power.autoCalibrate();
pinMode(2, INPUT_PULLUP);
attachInterrupt(0, myInterrupt, CHANGE);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
timePassed = millis() - timerStart;
if (timePassed < 72000000) {
power.sleepDelay(300000);
}
if (timePassed >= 72000000) {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
power.sleepDelay(500);
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1500);
}
}
void myInterrupt() {
power.wakeUp();
timerStart = millis();
}
Изменено: