Вот застрял на кнопке

Тема в разделе "ESP8266, ESP32", создана пользователем woow, 20 июл 2020.

  1. woow

    woow Гик

    Привет, скажите глупый вопрос, но вчера не нашёл ответа, на 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;
    }
     
     
  2. b707

    b707 Гуру

    и в чем проблема?
     
  3. woow

    woow Гик

    Кнопку нажал лед загорелся, отпустил кнопку лед светит, повторное нажатие гасит, но так не происходит. Нажимаю светится отпускаю гаснит.
     
  4. akl

    akl Гуру

    lastButtonState = buttonState; походу за скобки вывалилось
     
  5. Asper Daffy

    Asper Daffy Иксперд

    «На скорость не влияет»
     
  6. Asper Daffy

    Asper Daffy Иксперд

    Ну, тогда так и пишите. Вы же написали, что "светится пока удерживается кнопка" - она так и работает. Пишет то, что Вам нужно, а не то, что удалось в сети нарыть.
     
  7. akl

    akl Гуру

    включать или выключать светодиод должно определяться в зависимости от текущего состояния светодиода, а не от состояния кнопки
    думаю если строчку
    if (buttonState == LOW) {
    заменить на
    if (digitalRead(LED_PIN) == LOW) {
    то оно заработает как надо

    но это не точно
     
    Daniil нравится это.