Инструменты пользователя

Перевод этой страницы:

Инструменты сайта


Боковая панель

Для чего нужен ОрбиКрафт

Подсистемы конструктора

Инструкции по работе с ОрбиКрафт

Уроки

Лабораторная оснастка

Знакомство с Arduino

Полезная нагрузка на базе Arduino

Обратная связь

Новости

arduino_s_03

3. Кнопка

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

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

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

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

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

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

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

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

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

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

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

3.2.1 сборка схемы

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

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

Запрограммируем ручной светофор. Объявим светодиоды и кнопки. В процедуре 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() можно прочитать здесь http://arduino.ru/Reference/PinMode

Подробнее о if…else можно прочитать здесь http://arduino.ru/Reference/Else


Задания

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

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

arduino_s_03.txt · Последние изменения: 2020/05/07 20:29 — golikov

Инструменты страницы