Уроки Ардуино: создаем выключатель

выключатель Уроки Arduino

Перед тем, как перейти создавать выключатель, разберемся и объясним, что такое порты ввода и вывода. Любая плата обладает своими вводами и выводами. Их называют выходами, портами, пинами(от анг. pin). Для того, чтобы разобраться с платами, используют Arduino, как правило, Arduino UNO.

Приведем в качестве примера схему платы. На ее «углах» вы можете увидеть выводы, обладающие обозначениями цифрового формата с тильдой и без нее. Выводы с тильдой являются PWM-Широтно Импульсная Модуляция(ШИМ). Данные импульсы используются для управления устройствами, требующими аналоговый сигнал.

Выводы платы Arduino

Каждый вывод сверху подписан цифровым обозначением от 0 до 13 и GND. Эти выводы являются цифровыми. Выводы снизу-от A0 до A5, GND в объёме 2 штук, 5V и 3.3V соответственно. Они являются аналоговыми, их используют в случае нехватки цифровых. В программном формате аналоговые выводы можно обозначать как 14, 15, 16, 17, 18, 19 вместо A0, A1, A2, A3, A4, A5. Как правило, подобные обозначения используются для создания большого массива пинов.5 2

Как цифровые, так и аналоговые выводы могут принимать сигнал цифрового вида. Некая последовательность логических нулей и единиц от скачков напряжение от 0 до 5 вольт называется цифровым сигналом. Однако только аналоговые пины принимают аналоговые сигналы. Аналоговые выводы представляют собой плавно изменяющееся напряжение в диапазоне от 0 до 5 вольт с незначительным шагом.

Управление цифровыми пинами осуществляется через подачу тока или прекращение подачи. С вывода можно считать информацию о подаче или отсутствии тока. Для этого нужно создать замкнутую цепь.

Порты платы и режимы работы

Аналоговые и цифровые порты могут работать как входы, так и выходы. По умолчанию все они настроены как входы. Настройка режима работы осуществляется при помощи команды вида:

pinmode(pin, mode), где pin это номер порта(цифровые от 0 до 13, аналоговые от 14 до 19, либо же от A0 до A5), mode-режим работы порта(INPUT-вход(приём сигнала); OUTPUT-выход, выдаёт 0 или 5В; INPUT_PULLUP-вход с плавным повышением напряжения от 0 до 5В).Примеры использования:

pinMode(1, INPUT); — назначаем pin(порт) с номером 1 в качестве входа

pinMode(2, OUTPUT); — назначаем pin(порт) с номером 2 в качестве вывода

pinMode(3, INPUT_PULLUP); — назначаем pin(порт) с номером 3 входа с возрастанием напряжения от 0 до 5 вольт. Подробнее о примерах сфер использования можно прочитать далее.

3 8

Во-первых, поговорим о том, как подключить кнопку к плате. Для этого нужно объявить пины выходами командой pinMode. Допустим, это будут аналоговый пин номер 5, а также 2 цифровых-12 и 13. Для подачи сигнала на пин используется функция вида:

digitalWrite(pin, signal), где pin-номер пина, signal-тип подаваемого сигнала(LOW, 0 или false подают сигнал в 0 В; HIGH, 1 или true подают сигнал в 5 В).

На заметку: напряжение измеряется между цифровым пином и землей(пин с названием GND-от англ.Ground-земля).

Объясним это на примере программы:

void setup() {

pinMode(A5, OUTPUT);

pinMode(12, OUTPUT);

pinMode(13, OUTPUT);

digitalWrite(13, HIGH);

digitalWrite(12, 1);

digitalWrite(A5, 0);

}

void loop() {

}

На выводе А5(аналоговый цифровой) напряжение в нашем случае-0 вольт. На пине номер 12 напряжение составляет 4.68 Вольт. Почему же оно не равно 5 вольтам? Дело в том, что данный порт питается от USB, соответственно на него нужно затратить некое напряжение. К тому же, у нас горит светодиод.

Подключение кнопки к Arduino

Плавно перейдем к тому, как подключить кнопку к плате Arduino? Для этого нам понадобится непосредственно кнопка и переназначение наших пинов в качестве входов(кнопка передает сигнал и считывает значение логической переменной, отображающей наличие напряжения на пине, передавая его непосредственно нам на экран)

void setup() {

pinMode(A5, INPUT);

pinMode(12, INPUT);

pinMode(13, INPUT);

 

Serial.begin(9600);

}

void loop() {

boolean button1 = digitalRead(A5);

boolean button2 = digitalRead(13);

Serial.print(“Button1: ”);Serial.print(button1);

Serial.print(«, Button2: «);Serial.println(button2);

}

Значения равны нулю(любые подключения отсутствуют). Источник высокого сигнала логической единицы(истины) является непосредственно наша микросхема и 5 вольтовый пин. Поставив провод в 5 В на A5 мы получим значение Button1, равное 1. При отключении провода значение остается прежним. При подаче низкого сигнала от пина земли(GND) оба значения равны 0.

4 9

Теперь поставим резистор на землю и пин A5. Резистор подставляем к кнопке(ее можно поставить в любое свободное место). Кнопка соединяется с землей резистора. При нажатии кнопки значение Button1 равняется логической единице. Однако не требуется ставить резистор на каждую кнопку, поскольку резистор предусмотрен в нашем рабочем пространстве Arduino. Режим функции pinMode INPUT_PULLUP «заставляет» включить встроенный в плату Arduino резистор. Его легко использовать для подключения кнопок. Отличие режима работы в том, что кнопка идет к земле, а при нажатии кнопки мы будем получать 0, а при отпущенной-1. Для этого нам нужно инвертировать(сделать обратным) сигнал с A5.

void setup() {

pinMode(A5, INPUT_PULLUP);

pinMode(12, INPUT);

pinMode(13, INPUT);

Serial.begin(9600);

}

void loop() {

boolean button1 = !digitalRead(A5); // инвертируем сигнал с A5

boolean button2= digitalRead(13);

 

Serial.print(“Button1: ”);Serial.print(button1);

Serial.print(“, Button2: “);Serial.println(button2);

}

Именно таким способом рекомендуется подключать кнопки и обрабатывать их нажатия.

Кнопка-включатель во время нажатия

void setup() {

pinMode(A5, INPUT_PULLUP);

pinMode(12, INPUT);

pinMode(13, OUTPUT); // встроенный светодиод

Serial.begin(9600);

}

void loop() {

boolean button1 = !digitalRead(A5); // инвертируем сигнал с A5

boolean button2= digitalRead(13);

if (button1 == 1) digitalWrite(13, 1); // включение светодиода

else digitalWrite(13, 0); //выключение светодиода

Serial.print(“Button1: ”);Serial.print(button1);

Serial.print(“, Button2: “);Serial.println(button2);

}

Включаем и выключаем встроенный светодиод при помощи нажатия кнопки. Написанное условие в программе означает: Подача высокого сигнала осуществляется на 13 порт при нажатой кнопке, при отпущенной-низкий. 13 порт отвечает за встроенный светодиод.

Создаем кнопку-выключатель светодиода

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

int tekButton = LOW; // отсутствие напряжения на кнопке

int prevButton = LOW; // прошлое состояние кнопки

boolean ledOn = false; // включение светодиода

void setup() {

pinmode(12, INPUT);

pinmode(13, OUTPUT);

}

boolean testLed(boolean last) { // проверка светодиода

boolean current = digitalRead(12);

if (last != current) { // “last” принимает значение 1 или 0, “current” принимает значения логической 1 или 0 12 разъёма

delay(5);

current = digitalRead(12);

}

return current;

}

void loop()

{

tekButton = testLed(prevButton); // передаем 0 на состояние кнопки

if (tekButton == HIGH && prevButton == LOW);

{

ledOn = !ledOn

}

prevButton = tekButton;

digitalWrite(13, ledOn);

}

Таким образом, в данной статье мы разобрали основной функционал Arduino и научились создавать кнопку-выключатель.

Оцените статью
Информация об Ардуино
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я принимаю политику конфиденциальности.