Кнопка 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 нажатой при включении или сбросе платы: она запустится в режиме загрузки, и скетч не стартует.