I'm making a software latch with following features :
[*]ATtiny85 @ 1 MHz, BOD disabled
[*]PB0 = LED, PB3 = Button (with internal pull-up) Interrupt on change
[*]Deep sleep until button press
[*]Change state with 2s button hold
АЦП и периферийные устройства отключены для сохранения питания < /li>
< /ul>
Код ниже, который я сейчас работает, но есть какое -то странное поведение, как иногда не регистрировать кнопку, когда он спят, так что он не просыпается.#include
#include
#include
#define LED_PIN 0 // PB0
#define BUTTON_PIN 3 // PB3
bool ledState = false;
bool buttonHandled = false;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
digitalWrite(LED_PIN, LOW);
GIMSK |= (1 = 2000) return true;
}
return false;
}
// Sleep function
void goToSleep() {
digitalWrite(LED_PIN, LOW);
cli();
wdt_disable(); // Disable watch dog timer to save power
sleep_bod_disable(); // Disable Brown out detector
// Power-saving: disable peripherals
ADCSRA &= ~(1
Подробнее здесь: https://stackoverflow.com/questions/797 ... ate-change
Attiny85 Software Latch с Buttonhold для запуска / сон. ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение