Я делал детект на длительное нажатие кнопки чтоби войти в меню но по прохождению 5 секунд после запуска ардуино кнопка срабативала сразу же без длительного нажатия. Помогите решить данную проблему? (скетч находится на этапе написания) Код (C++): #define CLK 2 #define DIO 3 #define button14B 14 // пин кнопки button14 #include "GyverTM1637.h" GyverTM1637 disp(CLK, DIO); int button1S = 0; char button1M = 0; int brightness1 = 7; boolean Flag1 = 0; boolean button1H = 0; boolean button1HO = 0; boolean button1D = 0; boolean button1DP = 0; #define hold 5000 #define hold_1 200 unsigned long button1_timer; uint32_t Now, clocktimer; byte Brightness[] = {_B,_r,0x40,_S,_empty}; byte Setings[] = {_S,_E,_t,_t,_i,_n,_G,_S,_empty}; void setup() { Serial.begin(9600); pinMode(button14B, INPUT); disp.clear(); disp.brightness(7); } void loop() { buttons(); //-------опрос кнопок-------- button1S = analogRead(button14B); } void buttons() { // флажки кнопок (F - Flag) if(button1S >= 730 && button1S <= 740 && button1M == 0 && millis() - button1_timer > hold) { Serial.println("Menu"); disp.clear(); disp.runningString(Setings, sizeof(Setings), 200); button1M = 1; button1_timer = millis(); } switch (button1M) { case 1: if (Flag1 == 0) { Serial.println("Brightness"); disp.clear(); disp.runningString(Brightness, sizeof(Brightness), 200); Flag1 = 1; } if(Flag1 == 1){ disp.displayInt(brightness1); Serial.println(brightness1); } if(button1S >= 640 && button1S <= 650 && brightness1 < 7 && Flag1 == 1 && millis() - button1_timer > hold_1) { brightness1 ++; disp.brightness(brightness1); button1_timer = millis(); } if(button1S >= 850 && button1S <= 860 && Flag1 == 1 && brightness1 > 0 && millis() - button1_timer > hold_1) { brightness1 --; disp.brightness(brightness1); button1_timer = millis(); } break; case 2: ; break; case 3: ; break; case 4: ; break; case 5: ; break; case 6: ; break; } }
Код (C++): millis() - button1_timer > hold Изначально переменная button1_timer не инициализирована, можно считать, что ее значение равно нулю. Указанная проверка, с большой вероятностью, сработает без задержки.