Перейти к основному содержимому

Кнопка

Варианты подключения кнопки

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

Кнопка

Рисунок 1. Кнопка

Существуют 2 основные схемы подключения кнопки:

  • PULL UP - когда вывод, с которого считывается информация о состоянии кнопки, соединен через резистор с высоким уровнем сигнала +5V;

  • PULL DOWN - вывод, с которого считывается информация о состоянии кнопки, соединен через резистор с низким уровнем сигнала 0V(GND).

    Две основные схемы подключения кнопки

    Рисунок 2. Две основные схемы подключения кнопки

осторожно

Обратите внимание! Внутри кнопки пины попарно соединены между собой как показано на следующих рисунках.

PULL UP: в отпущенном состоянии с кнопки будет считано HIGH, а в нажатом LOW.

  • PULL UP, когда кнопка НЕ нажата - на пин поступит высокий уровень сигнала HIGH (+5 Вольт). Когда кнопка нажата - на пин поступит низкий уровень сигнала LOW(GND).

    Схема PULL UP

    Рисунок 3. Схема PULL UP

PULL DOWN: в отпущенном состоянии с кнопки будет считано LOW, а в нажатом HIGH.

  • PULL DOWN, когда кнопка НЕ нажата - на пин поступит низкий уровень сигнала LOW (GND). Когда кнопка нажата - на пин поступит высокий уровень сигнала HIGH (+5 Вольт).

    Схема PULL DOWN

    Рисунок 4. Схема PULL DOWN

Вывод кнопки, который расположен напротив пина, с которого считывается ее состояние соединяется к питанию или земле обязательно через резистор. Номинал резистора 1 кОм. Резистор помогает избежать помех и считывания неверного состояния кнопки.

Светофор с ручным управлением

###сборка схемы Соберем светофор с ручным управлением. В нем светодиоды будут включаться с помощью кнопок. На каждый сигнал светофора своя кнопка. Кнопки подключаем по схеме PULL DOWN.

Схема светофора с ручным управлением

Рисунок 5. Схема светофора с ручным управлением

Программа для управления светофором

Запрограммируем ручной светофор. Объявим светодиоды и кнопки. В процедуре void setup() настроим пины для светодиодов и кнопок:

  • кнопки - вход (INPUT), считываем их состояние;
  • светодиоды - выход (OUTPUT) задаем их состояние.

В процедуре void loop() будет 4 возможных варианта действий:

  • ЕСЛИ нажата кнопка, отвечающая за включение красного светодиода - то он включится;
  • ЕСЛИ нажата кнопка, отвечающая за включение желтого светодиода - то он включится;
  • ЕСЛИ нажата кнопка, отвечающая за включение зеленого светодиода - то он включится;
  • ИНАЧЕ - все три светодиода будут выключены.
//создаем переменные для светодиодов
int ledRed = 5;
int ledYellow = 6;
int ledGreen = 7;
//создаем переменные для кнопок
#define buttonRed 2
#define buttonYellow 3
#define buttonGreen 4

void setup(){
//настраиваем пины, к которым подключены светодиоды, как выходы
pinMode(ledRed, OUTPUT);
pinMode(ledYellow, OUTPUT);
pinMode(ledGreen, OUTPUT);
//настраиваем пины, к которым подключены кнопки, как входы
pinMode(buttonRed, INPUT);
pinMode(buttonYellow, INPUT);
pinMode(buttonGreen, INPUT);
}

void loop(){
//если нажата кнопка, отвечающая за включение красного светодиода то красный светодиод включается
if(digitalRead(buttonRed)==HIGH){
digitalWrite(ledRed, HIGH);
}
//если нажата кнопка, отвечающая за включение желтого светодиода, то желтый светодиод включается
else if(digitalRead(buttonYellow)==HIGH){
digitalWrite(ledYellow, HIGH);
}
//если нажата кнопка, отвечающая за включение зеленого светодиода, то зеленый светодиод включается
else if(digitalRead(buttonGreen)==HIGH){
digitalWrite(ledGreen, HIGH);
}
//иначе все три светодиода выключены
else{
digitalWrite(ledRed, LOW);
digitalWrite(ledYellow, LOW);
digitalWrite(ledGreen, LOW);
}
}
подсказка

Подробнее о pinMode() можно прочитать здесь.

Подробнее о if…else можно прочитать здесь.

Задания

  1. Соберите схему из Arduino, синего светодиода, подключенного к пину 11 с резистором номиналом 390 Ом, и кнопки с резистором, номиналом 10 кОм, подключенной к пину 3. Запрограммируйте Arduino чтобы светодиод циклически включался на 0.3 секунды, и выключался на 0.3 секунды при нажатой кнопке, и никогда не включался при отпущенной.

  2. Соберите схему из Arduino, красного и синего светодиодов, подключенных к пинам 8 и 9 с резисторами номиналом 390 Ом, и кнопки с резистором, номиналом 10 кОм, подключенной к пину 4. Запрограммируйте Arduino чтобы светодиоды поочередно включались и выключались на 0.5 секунды в противофазе - если включен первый то выключен второй и наоборот. Светодиоды должны поочередно включатся после короткого однократного нажатия кнопки, и перестать включаться после следующего короткого однократного нажатия кнопки.