Подключение тактовой кнопки.

В этой статье мы научимся работать с тактовой кнопкой, разобрав задучу с простым фонариком.

Условие

Написать программу управления светодиодом при помощи кнопки. Когда кнопка нажата, светодиод должен гореть. Когда же кнопка отпущена, светодиод должен гаснуть.

Решение

Собираем схему согласно рисунку. Светодиодный модуль включается в разъем 9, при этом управление им осуществляется с помощью порта контроллера No9. Модуль с тактовой кнопкой подключается к разъему 6, задействуя порт No8.

 

Теперь, напишем программу:

 

//Номер вывода светодиода
#define LED_PIN 9;
//Номер вывода кнопки
#define BUTTON_PIN 8;
//Переменная для хранения состояния кнопки
int state = 0;

void setup() {
  //Инициализируем вывод 9 как выход
  pinMode(LED_PIN, OUTPUT);
  //Инициализируем вывод 8 как вход
  pinMode(BUTTON_PIN, INPUT);
}

void loop() {
  //Сохраняем состояние кнопки
  //в переменную
  state = digitalRead(BUTTON_PIN);

  //Если кнопка нажата
  if (state == LOW) {
    //Включаем светодиод
    digitalWrite(LED_PIN, HIGH);
  } else {
    //Выключаем светодиод
    digitalWrite(LED_PIN, LOW);
  }
}

 

Примечание

int state = 0; - объявление переменной типа int. Тип int - (от английского integer) - целочисленный тип данных, может принимать значение от -32768 до 32767.

При объявлении переменной на первом месте указывается ее тип, в нашем случае int. На втором месте указывается имя переменной state.

Если необходимо задать значение переменной, то после знака равно «=» указывается требуемое значение. В будущем значение переменной может изменяться.

Если нет необходимости задавать значение по умолчанию, то знак равно опускается и создается пустая переменная заданного типа; digitalRead(BUTTON_PIN); - возвращает состояние ножки контроллера. В качестве аргумента функция принимает номер входа, в нашем случае константу BUTTON_PIN. Если на ножке был высокий уровень (+5В), то команда вернет HIGH или «1». Если на ножке низкий уровень (0В), то LOW или «0».

Важно помнить, что когда мы говорим об электрической цепи, то подразумеваем, что высокий уровень HIGH - это +5 вольт, а низкий LOW - 0 вольт. Однако в контексте программирования, мы оперируем не напряжениями, а константами HIGH и LOW. Константа HIGH определена в среде, как единица «1», а LOW, как ноль «0». По сути это просто флаг ДА или НЕТ.

if (state == LOW) {...} else {...} - условный оператор, предназначенный для проверки выполнения условия. В нашем случае он сравнивает значение переменной state с константой LOW, которая равно «0». Проще можно переписать выражение следующим образом: if (state == 0) {...} else {...}.

Если условие выполняется и переменная state равна нулю, выполняется блок команд в первых фигурных скобках. В противном случае выполняется блок команд во вторых фигурных скобках, после оператора else.