Для чего нужен ОрбиКрафт
Подсистемы конструктора
Инструкции по работе с ОрбиКрафт
Уроки
Лабораторная оснастка
Знакомство с Arduino
Полезная нагрузка на базе Arduino
Обратная связь
Новости
Для чего нужен ОрбиКрафт
Подсистемы конструктора
Инструкции по работе с ОрбиКрафт
Уроки
Лабораторная оснастка
Знакомство с Arduino
Полезная нагрузка на базе Arduino
Обратная связь
Новости
Познакомимся с тактовой кнопкой. У такой кнопки нет фиксации - это кнопка замыкает цепь, только пока она нажата. Обычно у таких кнопок попарно выводы соединены между собой. Именно эти пары выводов замыкаются или размыкаются.
Существуют 2 основные схемы подключения кнопки:
PULL UP: в отпущенном состоянии с кнопки будет считано HIGH, а в нажатом LOW.
PULL UP когда кнопка НЕ нажата - на пин поступит высокий уровень сигнала HIGH (+5 Вольт). Когда кнопка нажата - на пин поступит низкий уровень сигнала LOW(GND).
PULL DOWN: в отпущенном состоянии с кнопки будет считано LOW, а в нажатом HIGH.
PULL DOWN когда кнопка НЕ нажата - на пин поступит низкий уровень сигнала LOW (GND). Когда кнопка нажата - на пин поступит высокий уровень сигнала HIGH (+5 Вольт).
Вывод кнопки, который расположен напротив пина, с которого считывается ее состояние соединяется к питанию или земле обязательно через резистор. Номинал резистора 1 кОм. Резистор помогает избежать помех и считывания неверного состояния кнопки.
Соберем светофор с ручным управлением. В нем светодиоды будут включаться с помощью кнопок. На каждый сигнал светофора своя кнопка. Кнопки подключаем по схеме PULL DOWN.
Запрограммируем ручной светофор. Объявим светодиоды и кнопки. В процедуре void setup() настроим пины для светодиодов и кнопок:
В процедуре 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 секунды в противофазе - если включен первый то выключен второй и наоборот. Светодиоды должны поочередно включатся после короткого однократного нажатия кнопки, и перестать включаться после следующего короткого однократного нажатия кнопки.