Внутренняя подтяжка к питанию
Часть раздела Входные сигналы путешествия по Arduino на Coddy. Урок 3 из 22.
Ты использовал INPUT_PULLUP начиная с урока «Чтение кнопки». Он включает резистор внутри платы сопротивлением от 20k до 50k ohm между контактом и 5V: подтягивающий резистор к земле из прошлого урока был подключён наоборот, и никаких дополнительных компонентов не нужно. Кнопка соединяет контакт только с GND.
Но есть нюанс: логика работает наоборот: в отпущенном состоянии считывается HIGH, при нажатии — LOW, и в скетче легко перепутать многочисленные проверки == LOW. Сравнение, например digitalRead(2) == LOW, само по себе принимает значение true или false, а bool — это переменная, хранящая true или false. Сохрани результат в переменную с говорящим именем:
bool pressed = digitalRead(2) == LOW;
if (pressed) {
// кнопка нажата
}После этого код читается как надо. При выводе значения bool для true отображается 1, а для false — 0.
Задание
ЛегкоКнопка соединяет контакт 2 с GND, а светодиод подключён к контакту 13:
- установи для контакта 2 режим
INPUT_PULLUP - сохрани
digitalRead(buttonPin) == LOWв переменную типаboolс именемpressed - выведи
pressed, включай светодиод, пока значение равноtrue, затем подожди 100 мс
Для проверки при нажатой кнопке ожидается 1, а при отпущенной — 0. Нажми Run, удерживай кнопку, затем нажми Check.
Попробуйте сами
const int buttonPin = 2;
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
// включите подтяжку вывода кнопки
}
void loop() {
// bool pressed = ...
// выведите значение, включите светодиод, пока оно равно true, подождите 100 мс
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Входные сигналы
Потренируйтесь самостоятельно: Песочница Arduino