Проблема с кнопкой
При нажатие на кнопку лампочка гаснет как будто аттини зависает
Отпускаешь кнопку всё работает в штатном режиме
Писал в Arduino IDE для загрузки в аттини использую библиотеку MicroCore
Может кто сталкивался
При нажатие на кнопку лампочка гаснет как будто аттини зависает
Отпускаешь кнопку всё работает в штатном режиме
Писал в Arduino IDE для загрузки в аттини использую библиотеку MicroCore
Может кто сталкивался
C++:
#include <EEPROM.h>
#define INIT_ADDR 50 // номер резервной ячейки
#define INIT_KEY 50
#define LAMPA_POV PB0
#define SIGNAL_POV PB1
#define SIGNAL_BLIZ PB3
#define KNOPKA_YARK PB4
void yarkost();
bool state;
byte bri = 125;
uint32_t btnTimer, myTimer1, timeCounter;
void setup() {
pinMode(SIGNAL_BLIZ, INPUT); // объявляем пин 7 как вход
pinMode(LAMPA_POV, OUTPUT);
pinMode(SIGNAL_POV, INPUT); // объявляем пин 6 как вход
pinMode(KNOPKA_YARK, INPUT_PULLUP); // кнопка настройки яркости
if (EEPROM.read(INIT_ADDR) != INIT_KEY) {
EEPROM.write(INIT_ADDR, INIT_KEY);
EEPROM.put(0, bri);
}
}
void loop() {
boolean test;
boolean pov = digitalRead(SIGNAL_POV);
boolean bliz = digitalRead(SIGNAL_BLIZ);
static bool flag1 = false;
state = !digitalRead(KNOPKA_YARK);
if (state && !flag1 && millis() - btnTimer > 100 && bliz == 1 ) {
flag1 = true;
btnTimer = millis();
}
if (state && flag1 && millis() - btnTimer > 600 && bliz == 1) {
btnTimer = millis();
yarkost();
}
if (!state && flag1 && millis() - btnTimer > 500) {
flag1 = false;
btnTimer = millis();
}
switch (pov) {
case 0:
analogWrite(LAMPA_POV, 255);
while (digitalRead(SIGNAL_BLIZ) == 1) {
EEPROM.get(0, bri);
bliz = digitalRead(SIGNAL_BLIZ);
pov = digitalRead(SIGNAL_POV);
analogWrite(LAMPA_POV, bri);
if (pov == 1 || bliz == 0) break;
}
break;
case 1:
test = 0;
while (test == 0) {
pov = digitalRead(SIGNAL_POV);
if ( pov == 1) {
analogWrite(LAMPA_POV, 255);
myTimer1 = millis();
} else if ( millis() - myTimer1 < 2000 && pov < 1 ) {
analogWrite(LAMPA_POV, 0);
} else {
test = test + 1;
}
}
break;
}
}
void yarkost() {
static bool flag = true;
uint32_t morgalka, regyark;
byte yark;
bri = 0;
yark = 0;
while (state && flag && yark < 3) {
state = !digitalRead(KNOPKA_YARK);
morgalka = millis();
while (millis () - morgalka < 400) {
analogWrite(LAMPA_POV, 0);
}
while (millis() - regyark > 500 && state && flag) {
state = !digitalRead(KNOPKA_YARK);
bri += 25;
bri = constrain(bri, 0, 255);
EEPROM.put(0, bri);
morgalka = millis();
while (millis () - morgalka < 700) {
analogWrite(LAMPA_POV, bri);
}
regyark = millis();
if (bri == 250) {
analogWrite(LAMPA_POV, 0);
while (yark != 10) {
analogWrite(LAMPA_POV, bri);
morgalka = millis();
while (millis () - morgalka < 300) {
analogWrite(LAMPA_POV, 0);
}
morgalka = millis();
while (millis () - morgalka < 200) {
analogWrite(LAMPA_POV, 255);
}
yark += 1;
state = !digitalRead(KNOPKA_YARK);
}
}
}
}
}