Практически в любой современной технике или в приборе используются тактовые кнопки, при нажатии на которые мы привыкли видеть выполнение чего-либо со световой индикацией нажатия. Давайте попробуем сделать что-то подобное. Для построения схемы нам понадобится сама тактовая кнопка, резистор на 10кОм, несколько проводников и макетная плата. Думаю, что любой начинающий радиолюбитель знает насколько удобно использовать макетную плату. Она станет незаменимым помощником при предварительной сборке макета, при тестировании и отладке проекта.
Все элементы располагаются благодаря контактам, которые расположены на плате. Итак, наша программа будет включать встроенный светодиод при нажатии на кнопку и выключать его, если кнопку отпустить. Схема подключения представлена ниже.
Все элементы располагаются благодаря контактам, которые расположены на плате. Итак, наша программа будет включать встроенный светодиод при нажатии на кнопку и выключать его, если кнопку отпустить. Схема подключения представлена ниже.
Напомню, если у Вас есть светодиод и Вы хотите его подключить, то подсоедините его параллельно встроенному согласно инструкции изложенной в предыдущей статье: подключение светодиода к Arduino. Разберемся для чего нужен резистор. В данной схеме резистор используется в качестве "подтяжки". Схем подключения всего две: между проводником с сигналом и источником напряжения (для обеспечения высокого уровня) либо между проводником с сигналом и землей (для обеспечения низкого уровня).
Зашьем простенькую программу в Arduino. Для этого скопируйте код скетча или вызовите его через меню «File» - «Examples» - «Digital» - «Button».
const int buttonPin = 2; // Определим, что тактовая кнопка подключена к контакту "2"
const int ledPin = 13; // Определим, что светодиод подключен к контакту "13"
int buttonState = 0; // Зададим некую переменную и изначально присвоим ей нулевое значение (присвоим низкий уровень)
void setup()
{
pinMode(ledPin, OUTPUT); // Конфигурируем режим работы контакта "13" на выход
pinMode(buttonPin, INPUT); // Конфигурируем режим работы контакта "2" на вход
}
void loop()
{
buttonState = digitalRead(buttonPin); // Задаем, что переменная buttonState принимает значение с buttonPin (с контакта "2")
if (buttonState == HIGH)
{
digitalWrite(ledPin, HIGH); // Подаем высокий уровень. Светодиод включается
}
else
{
digitalWrite(ledPin, LOW); // Подаем низкий уровень. Светодиод выключается
}
}
Разберемся
теперь с кодом. Функция digitalRead() позволяет нам считывать значение сигнала на цифровых выводах. Разумеется, что цифровой сигнал может быть высоким или низким уровнем. Аргументом функции, находящийся в скобках, является контакт Arduino, который сконфигурирован "на вход".
Функция digitalWrite() работает обратным образом - не считывает, а подает (записывает) высокий или низкий уровень. В скобках необходимо указать два аргумента. В роли первого аргумента выступает контакт Arduino, а вторым аргументом выступает уровень сигнала. Другими словами, записываем "куда, что".
Мы уже разобрались, что изначально на контакт "2" поступает низкий
уровень, а при нажатии на тактовую кнопку уровень становится высоким.
Соответственно при отпускании кнопки уровень снова становится низким. Алгоритм программы построен на условии if-else: если уровень высокий - светодиод включен, иначе - светодиод выключен.
Надеюсь,
что эта статья была для Вас полезной. В следующем уроке мы изменим код этой программы и рассмотрим, как сделать светодиодную гирлянду на Arduino.
1 коммент.:
Не понимаю, почему горит светодиод, если достать кнопку?
Отправить комментарий