Привет, скажите глупый вопрос, но вчера не нашёл ответа, на ESP32 начал собирать BLE сканер, что тут оказывается не могу (не умею написать код для банальной кнопки), почему не работает код, кнопка при нажатии замыкает на GND, PIN подтянут к 3.3V через 10ком. Всё с кода убрал оставил только это и тут та и проблема когда нажимаешь кнопку LED зажигается, отпускаешь - гаснет, был бы дребезг то это происходило бы хаотично. Код (C++): #define LED_PIN 26 const int buttonPin = 19; int buttonState = 0; int lastButtonState = 0; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); digitalWrite(LED_PIN, LOW); } void loop() { buttonState = digitalRead(buttonPin); if (buttonState != lastButtonState) { if (buttonState == LOW) { digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); } delay(50); } lastButtonState = buttonState; }
Кнопку нажал лед загорелся, отпустил кнопку лед светит, повторное нажатие гасит, но так не происходит. Нажимаю светится отпускаю гаснит.
Ну, тогда так и пишите. Вы же написали, что "светится пока удерживается кнопка" - она так и работает. Пишет то, что Вам нужно, а не то, что удалось в сети нарыть.
включать или выключать светодиод должно определяться в зависимости от текущего состояния светодиода, а не от состояния кнопки думаю если строчку if (buttonState == LOW) { заменить на if (digitalRead(LED_PIN) == LOW) { то оно заработает как надо но это не точно