Amateur Radio Station R9AL

На этом уроке вы научитесь использовать кнопки с цифровыми входами, чтобы включать светодиод. Нажатие на кнопку - включит светодиод, нажатие другой кнопки выключит.

Необходимые компоненты:



Описание компонентов

Кнопка:

Кнопки - действительно простые компоненты. Когда вы нажимаете кнопку - они соединяют два контакта, чтобы через них мог протекать ток. Маленькие кнопки, которые используются в этом уроке, имеют четыре вывода, что может немного запутать.

На самом деле, есть только два электрических соединения. Внутри коммутационного блока контакты 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.

Пример:







Обсуждение на форуме





Copyright © R9AL 2020 Все права защищены

Рейтинг@Mail.ru Яндекс цитирования