Уроки / Урок 4

Кнопка BOOT

Читаем кнопку на GPIO9 и переключаем светодиод.

Кнопка BOOT подключена к GPIO9. После запуска скетча это обычная кнопка. В отпущенном состоянии вывод читается как HIGH (его подтягивает резистор), а при нажатии — как LOW.

const int LED = 8;
const int BTN = 9;  // кнопка BOOT

bool ledOn = false;
bool lastState = HIGH;

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(BTN, INPUT_PULLUP);
  digitalWrite(LED, HIGH);  // погасить
}

void loop() {
  bool state = digitalRead(BTN);
  if (lastState == HIGH && state == LOW) {  // момент нажатия
    ledOn = !ledOn;
    digitalWrite(LED, ledOn ? LOW : HIGH);
    delay(30);  // защита от дребезга контактов
  }
  lastState = state;
}

Дребезг

Контакты кнопки при нажатии несколько миллисекунд «прыгают», и плата видит десяток нажатий вместо одного. Короткая пауза delay(30) после нажатия это убирает.

Не держите BOOT нажатой при включении или сбросе платы: она запустится в режиме загрузки, и скетч не стартует.