На этом уроке вы научитесь использовать кнопки с цифровыми входами, чтобы
включать светодиод. Нажатие на кнопку - включит светодиод, нажатие другой
кнопки выключит.
Необходимые компоненты:
- Lafvin Mega2560 R3 - 1шт.
- Макетная плата 830 - 1шт.
- 5мм красный светодиод - 1шт.
- резисторы 220 Ом - 1шт.
- Кнопка - 2шт.
- М-М провода - 4шт.
Описание компонентов
Кнопка:
Кнопки - действительно простые компоненты. Когда вы нажимаете кнопку - они
соединяют два контакта, чтобы через них мог протекать ток. Маленькие кнопки,
которые используются в этом уроке, имеют четыре вывода, что может немного
запутать.
На самом деле, есть только два электрических соединения. Внутри коммутационного
блока контакты B и C соединены вместе, как и контакты A и D.
Принципиальная схема:
Монтажная схема:
Хотя корпус кнопки имеет квадратную форму - выводы выходяи из
противоположных сторон корпуса кнопки. Помните, что отрицательный вывод
светодиода (катод) - более короткий.
Код:
После подключения, пожалуйста, откройте программу из
папки с кодом - Цифровые входы урока 5 и нажмите ЗАГРУЗИТЬ,
чтобы загрузить программу.
См. Урок 2 для получения подробной информации
о процессе загрузки, если есть какие-либо ошибки.
Загрузите скетч в плату MEGA2560. Нажатие левой кнопки включит светодиод,
нажатии правой кнопки - выключит его. Первая часть скетча определяет три
переменные для трех выводов, которые должны быть использованы.
"LedPin" является выходом, а "buttonApin" будет относиться к левой кнопке,
"buttonApin" - к правой.
Функция "setup" определяет ledPin как выходной, как обычно, но теперь у нас
есть два входа. В этом случае мы используем набор pinMode, и сконфигурируем их
как "INPUT_PULLUP":
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);
Режим INPUT_PULLUP означает, что вывод должен использоваться как вход и
будет подулючен к внутреннему подтягивающему резистору (резистор,
подключен к питанию внутри микросхемы). Другими словами, значение по умолчанию
для входа - ВЫСОКОЕ, вот почему кнопки подключены к GND. Когда кнопка нажата,
она соединяет входной контакт с GND, чтобы он больше не был HIGH. Т.е. вход
становится НИЗКИМ только при нажатии кнопки. С этой, немножко перевернутой
логикой мы справимся в функции 'loop'.
void loop()
{
if (digitalRead(buttonApin) == LOW)
{
digitalWrite(ledPin, HIGH);
}
if (digitalRead(buttonBpin) == LOW)59
{
digitalWrite(ledPin, LOW);
}
}
В функции 'loop' есть два оператора if. По одному на каждую кнопку. Каждый
делает "digitalRead" на соответствующем входе. Помните, что если кнопка нажата,
соответствующий вход будет НИЗКИМ, если кнопка A находится в низком положении,
"digitalWrite" на ledPin включает ее. Точно так же, если кнопка B нажата, в
ledPin записывается LOW.
Пример:
Тема форума:
http://msevm.com/forum/index.php?topic=9893
|