Кто нибудь поможет подправить код? attiny85 digispark, не выходит из сна
- Войдите на сайт для отправки комментариев
Втр, 11/04/2017 - 15:41
Всем доброго дня! Подскажите пожалуйста что не так сделал.
Имеется диод и две кнопки + и -.
+ включает диод и увеличивет яркость, - уменьшает.
При зажатии + и - диод выключается, плата уходит в сон. После этого больше ничего не срабатывает.
Собственно вот сам скетч:
#include <avr/sleep.h> #include <avr/power.h> #define pinlaser 0 #define keyplus 2 // обязательно 2 для включения #define keyminus 3 //int sleepstatus =0; int value=0; void wakeupnow() { sleep_disable(); } void sleepnow() { set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_mode(); sleep_disable(); wakeupnow(); } void setup() { // put your setup code here, to run once: pinMode (pinlaser,OUTPUT); digitalWrite(pinlaser,LOW); pinMode (keyplus,INPUT); digitalWrite(keyplus,HIGH); pinMode (keyminus,INPUT); digitalWrite(keyminus,HIGH); attachInterrupt(0, wakeupnow, FALLING); analogWrite(pinlaser,0); sleepnow(); } void loop() { if (!digitalRead(keyplus) and digitalRead(keyminus)){ // plus delay (50); if (!digitalRead(keyplus) and digitalRead(keyminus)){ if (value<250) value+=25; analogWrite(pinlaser,value); while(!digitalRead(keyplus) and digitalRead(keyminus)); } if (!digitalRead(keyplus) and !digitalRead(keyminus)) delay (50); if (!digitalRead(keyplus) and !digitalRead(keyminus)){ analogWrite(pinlaser,0); sleepnow(); while (!digitalRead(keyplus) and !digitalRead(keyminus)); } } if (digitalRead(keyplus) and !digitalRead(keyminus)){ // minus delay (50); if (digitalRead(keyplus) and !digitalRead(keyminus)){ if (value>0) value-=25; analogWrite(pinlaser,value); while(digitalRead(keyplus) and !digitalRead(keyminus)); } if (!digitalRead(keyplus) and !digitalRead(keyminus)){ delay (50); if (!digitalRead(keyplus) and !digitalRead(keyminus)){ analogWrite(pinlaser,0); sleepnow(); while (!digitalRead(keyplus) and !digitalRead(keyminus)); } } } }а что программа делать должна?
Управление нагрузкой (диодом в моем случае).
Имеется диод и две кнопки + и -.
+ включает диод и увеличивет яркость, - уменьшает.
При зажатии + и - диод выключается, плата уходит в сон. После этого больше ничего не срабатывает.
Проблема в том что она из сна не выходит после выключения (зажатия + и -)
Исправьте
attachInterrupt(0, wakeupnow, FALLING);
Просыпаться может только по низкому уровню.
Исправьте
attachInterrupt(0, wakeupnow, FALLING);
Просыпаться может только по низкому уровню.
Поставил LOW вместо FALLING, при нажатии на + вообще включаться перестала. Или я что то не так поставил?
htpicc@gmail.com
htpicc@gmail.com
написал на почту