Занятие №2 Button
В котором мы подключаем кнопку.
Что хотим
На монтажной плате диод и кнопка. Нажимаем кнопку — диод горит, отпускаем — не горит, нажимаем — горит, отпускаем — опять не горит. Замечательно не горит.
- Ардуино
- Монтажная плата
- Резистор 220 Ом
- Резистор 10 кОм
- Светодиод
- Тактовая кнопка
- Проводники
- Среда программирования Arduino IDE (для ChipKit Uno32 среда программирования MPIDE)
Этапы работы
- Разбираемся
- Собираем схему
- Пишем программу
- Подсоединяем плату к компьютеру и прошиваем
- Наслаждаемся
- Экспериментируем
Разбираемся
На прошлом занятии с помощью команды digitalWrite (13,HIGHT); мы подавали логическую единицу (5В) на 13 Pin платы. На самом деле, таких цифровых выходов на классических Arduino их 14, а на используемом в лицее ChipKIT Uno 32 — целых 42! Как правило на платах они обозначены словом DIGITAL.
Замечательным свойством этих выходов является то, что они могут быть еще и входами. То есть микроконтроллер может узнать, какое логическое значение на этих разъемах: 0 (LOW) или 1 (HIGH). С технической точки зрения логическому 0 соответствует напряжение из диапазона от 0 до 2 В, а логической единице — от 3 до 5В.
Для того, что бы некоторый порт работал на чтение информации, в разделе setup его надо соответствующим образом настроить. Допустим, читать информацию будем со 2-ого Pin’а. Тогда:
void setup (){
PinMode (2,INPUT);
}
Для чтения информации со 2-ого входа в программе будем использовать функцию digitalRead(). Её значение надо запомнить в переменной. Назовём эту переменную Pin2. Оператор в программе запишется так:
Pin2 = digitalRead(2);
Что же будет читать программа? Какое значение записывается в Pin2? Точно ответить на данный вопрос не возможно. Для того, что бы на входе платы оказался 0, его надо притянуть через достаточно большое сопротивление (порядка 10кОм) на GND (ground — земля) платы:
Единицу будем подавать через кнопку:
Сопротивление должно быть высокоомным по двум причинам:
1. При замыкании кнопки не произойдёт КОРОТКОЕ ЗАМЫКАНИЕ, плата не сгорит.
2. Ток не уйдёт в землю, а пойдёт туда, куда нам надо — на вход платы.
Собираем схему:
Пишем программу
Диод должен гореть только если кнопка нажата, т.е. сигнал на Pin2 имеет значение HIGH. Пишется это так:
void loop(){
Pin2 = digitalRead(2); //читаем сигнал на втором Pin'е
if (Pin2 == HIGH) { //Если его состояние HIGH
digitalWrite(13,HIGH); //то зажигаем диод
}
else //иначе
{
digitalWrite(13,LOW); //выключаем диод
}
}
Переменные надо описывать. В самом начале напишем строку
int Pin2 = 0
;
Тем самым мы создадим целочисленную переменную с именем Pin2 и присвоим её значение 0.
Программа полностью:
int Pin2 = 0;
void setup (){
PinMode(13,OUT);
PinMode (2,INPUT);
}
void loop(){
Pin2 = digitalRead(2);
if (Pin2 == HIGH) {
digitalWrite(13,HIGH);
}
else
{
digitalWrite(13,LOW);
}
}
Подключаем, прошиваем, радуемся
Экспериментируем
- Где можно применить созданный прибор?
- Попробуйте сделать нормальным состоянием для диода — включено. При нажатии на кнопку диод должен гаснуть
- Можно реализовать такую схему: бегущий огонёк из 3-4 диодов бежит в одну сторону. При нажатии на кнопку огоньки бегут в другую сторону. Схему для подключения диодов можно посмотреть на прошлом занятии.
- Подумайте, как подключить вторую кнопку. Для разработки схемы Вам может помочь программа FRITZING. Если у Вас серьезные намерения на освоение основ микроэлектроники вообще и Arduino в частности, то обязательно скачайте и установите эту программу. Схемы, которые вы видите на страницах этого блога делаются именно в этой программе.
- А не реализовать ли Вам такой проект: несколько диодов в свободном состоянии выключены. При нажатии на правую кнопку огонёк светодиодов бежит вправо, на левую — влево. Замечательный дополнительный указатель поворота, который можно укрепить на заднее стекло автомобиля. Еще можно добавить третью кнопку — это будет стоп-сигнал — все диоды зажигаются одновременно. А еще четвертую — мигающий сигнал всех диодов — задний ход. А еще… (тут Остап понял, что его понесло… )
Оставьте комментарий