Две кнопки одновременно
Часть раздела Входные сигналы путешествия по Arduino на Coddy. Урок 7 из 22.
У каждой кнопки есть собственный вывод и собственный digitalRead(). Плата считывает их одну за другой, но настолько быстро, что для тебя это происходит одновременно.
У заводских станков часто есть две кнопки, расположенные далеко друг от друга, и станок работает, только пока нажаты обе. Обе руки на кнопках, поэтому ни одна из них не может оказаться рядом с лезвием. Это правило задаёт && из раздела «Объединение условий»:
bool left = digitalRead(2) == LOW;
bool right = digitalRead(3) == LOW;
if (left && right) {
// обе кнопки нажаты
}Для обоих выводов требуется INPUT_PULLUP. Забудешь настроить один — этот вывод будет плавать, и здесь он будет считываться как LOW, словно его кнопка всегда нажата.
Задание
ЛегкоКнопки подключены к контактам 2 и 3, оба соединены с GND, а светодиод — к контакту 13. Зажигай светодиод, только пока нажаты обе кнопки:
- установи для контактов 2 и 3 режим
INPUT_PULLUP - считай состояние каждой кнопки в переменную типа
bool - зажигай светодиод, когда нажаты обе кнопки, иначе выключай его
Нажми Run, удерживай одну кнопку, затем обе, а потом нажми Check.
Попробуйте сами
const int leftPin = 2;
const int rightPin = 3;
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
// настройте выводы обеих кнопок в режиме INPUT_PULLUP
}
void loop() {
// считывайте состояние обеих кнопок и включайте светодиод, только пока обе кнопки нажаты
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Входные сигналы
Потренируйтесь самостоятельно: Песочница Arduino