Menu
CoddyTech

Две кнопки одновременно

Часть раздела Входные сигналы путешествия по Arduino на Coddy. Урок 7 из 22.

У каждой кнопки есть собственный вывод и собственный digitalRead(). Плата считывает их одну за другой, но настолько быстро, что для тебя это происходит одновременно.

У заводских станков часто есть две кнопки, расположенные далеко друг от друга, и станок работает, только пока нажаты обе. Обе руки на кнопках, поэтому ни одна из них не может оказаться рядом с лезвием. Это правило задаёт && из раздела «Объединение условий»:

bool left = digitalRead(2) == LOW;
bool right = digitalRead(3) == LOW;

if (left && right) {
  // обе кнопки нажаты
}

Для обоих выводов требуется INPUT_PULLUP. Забудешь настроить один — этот вывод будет плавать, и здесь он будет считываться как LOW, словно его кнопка всегда нажата.

challenge icon

Задание

Легко

Кнопки подключены к контактам 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() {
  // считывайте состояние обеих кнопок и включайте светодиод, только пока обе кнопки нажаты
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Входные сигналы

Потренируйтесь самостоятельно: Песочница Arduino