Занятие №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);
}
}

Подключаем, прошиваем, радуемся

Экспериментируем

  1. Где можно применить созданный прибор?
  2. Попробуйте сделать нормальным состоянием для диода — включено. При нажатии на кнопку диод должен гаснуть
  3. Можно реализовать такую схему: бегущий огонёк из 3-4 диодов бежит в одну сторону. При нажатии на кнопку огоньки бегут в другую сторону. Схему для подключения диодов можно посмотреть на прошлом занятии.
  4. Подумайте, как подключить вторую кнопку. Для разработки схемы Вам может помочь программа FRITZING. Если у Вас серьезные намерения на освоение основ микроэлектроники вообще и Arduino в частности, то обязательно скачайте и установите эту программу. Схемы, которые вы видите на страницах этого блога делаются именно в этой программе.
  5. А не реализовать ли Вам такой проект: несколько диодов в свободном состоянии выключены. При нажатии на правую кнопку огонёк светодиодов бежит вправо, на левую — влево.  Замечательный дополнительный указатель поворота, который можно укрепить на заднее стекло автомобиля. Еще можно добавить третью кнопку — это будет стоп-сигнал — все диоды зажигаются одновременно. А еще четвертую — мигающий сигнал всех диодов — задний ход. А еще… (тут Остап понял, что его понесло… )

Удачных творческих находок

Конец занятия

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