Подключение кнопки к Arduino. Тактовая кнопка и светодиод.

Практически в любой современной технике или в приборе используются тактовые кнопки, при нажатии на которые мы привыкли видеть выполнение чего-либо со световой индикацией нажатия. Давайте попробуем сделать что-то подобное. Для построения схемы нам понадобится сама тактовая кнопка, резистор на 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 коммент.:

VoltNerd комментирует...

Не понимаю, почему горит светодиод, если достать кнопку?

Отправить комментарий

 
Copyright © 2013 | Arduinokit
Arduino проекты. Уроки, программирование, управление и подключение ардуино.