Menu
CoddyTech

Внутренняя подтяжка к питанию

Часть раздела Входные сигналы путешествия по 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.

challenge icon

Задание

Легко

Кнопка соединяет контакт 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 мс
}
quiz iconПроверьте себя

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

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

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