Модуль «Джойстик»
Подключение джойстика к Arduino позволит сделать дистанционное управление с помощью джойстика машинкой или роботом на Ардуино. Рассмотрим в статье, как подключить джойстик самостоятельно и сделать управление светодиодами с помощью джойстика на Ардуино.
Аналоговый джойстик представляет собой ручку, которая крепится на шарнире с двумя потенциометрами, определяющими положение джойстика по оси X и Y, и кнопкой Z. Наклон ручки вращает потенциометры и изменяет выходное напряжение, позволяя отследить степень отклонения ручки от центральной точки. При отпускании ручки джойстика, она плавно возвращается в центральное (нулевое) положение.
У модуля джойстика KY-023 есть свои недостатки. Дело в том, что ручка джойстика не всегда точно возвращается в центральное положение, поэтому следует учитывать в программе центральное положение ручки, как некоторый диапазон значений, а не точное значение. То есть, при положении ручки джойстика в центре, значение X и Y координат может находиться в диапазоне от 490 до 530, вместо 512.
Подключение джойстика к Arduino UNO
Для занятия нам понадобятся следующие детали:
плата Arduino Uno / Arduino Nano / Arduino Mega;
модуль джойстика ky-023;
2 светодиода и 2 резистора;
макетная плата;
провода «папа-мама», «папа-папа».
Скетч. Управление джойстиком светодиодами
Сделаем плавное включение светодиода, управляемое от джойстика. Для этого подключите два светодиода через резистор к аналоговым портам 5 и 6. В следующем скетче, с помощью функции map(), переменные X и Y преобразуются из диапазона чисел от 0 до 1023 в диапазон чисел от 0 до 255. Подключите светодиоды к пинам 5 и 6 Ардуино и загрузите следующий скетч.
#define pinX A2 // ось X джойстика
#define pinY A1 // ось Y джойстика
#define swPin 2 // кнопка джойстика
#define ledPin 13 // светодиод на Pin 13
#define ledX 5 // светодиод на Pin 5
#define ledY 6 // светодиод на Pin 6
void setup() {
pinMode(ledX, OUTPUT);
pinMode(ledY, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(pinX, INPUT);
pinMode(pinY, INPUT);
pinMode(swPin, INPUT);
digitalWrite(swPin, HIGH);
}
void loop() {
boolean ledState = digitalRead(swPin); // считываем состояние кнопки
digitalWrite(ledPin, ledState); // вкл./выкл. светодиод
int X = analogRead(pinX); // считываем значение оси Х
int Y = analogRead(pinY); // считываем значение оси Y
X = map(X, 0, 1023, 0, 255); // преобразуем значение X в другой диапазон
Y = map(Y, 0, 1023, 0, 255); // преобразуем значение Y в другой диапазон
analogWrite(ledX, X); // включаем светодиоды с разной яркостью
analogWrite(ledY, Y);
}
Модуль «Реле»
Реле Ардуно позволяет подключить устройства, работающие в режимах с относительно большими токами или напряжения. Мы не можем напрямую подключить к плате Arduino мощные насосы, двигатели, даже обычную лампочку накаливания – плата не предназначена для такой нагрузки и работать не будет. Именно поэтому нам придется добавить в схему реле, который вы можете встретить в любом проекте.
Реле в ардуино включает или выключает внешние устройства, определенным образом замыкая или размыкая отдельную электрическую сеть, в которую они подключены. С помощью ардуино и реле мы управляем процессом включения или выключения так же, как включаем или выключаем свет дома – подавая команду на замыкание или размыкание.
Наиболее распространенное реле для платы Ардуино выполняется в виде модуля, например, SONGLE SRD-05VDC. Устройство управляется напряжением 5 В, может коммутировать до 10 А 30 В DC и 10 А 250 В AC.
Схема изображена на рисунке. Реле состоит из двух не связанных между собой цепей – управляющая цепь А1 и А2 и управляемая 1, 2 и 3.
Между А1 и А2 имеется металлический сердечник. Если пустить по нему электрический ток, к нему притянется якорь (2). 1, 3 – неподвижные контакты. При отсутствии тока якорь будет около контакта 3.
Подключение реле к Ардуино
Рассмотрим одноканальный модуль реле. Он имеет всего 3 контакта, подключаются они к Ардуино Uno следующим образом: GND – GND, VCC – +5V, In – 3. Вход реле – инвертирован, так что высокий уровень на In выключает катушку, а низкий – включает.
Скетч для работы с реле
/*
Скетч для управления реле с помощью ардуино
Используем реле SONGLE SRD-05VDC
Реле ОТКРЫВАЕТСЯ при подаче низкого уровня сигнала (LOW) на управляющий пин.
Реле ЗАКРЫВАЕТСЯ при подаче высокого уровня сигнала (HIGH) на управляющий пин.
В данном примере мы просто открываем и закрываем реле раз в 5 секунд.
PIN_RELAY содержит номер пина, к которому подключено реле, которым мы будем управлять
В функции setup устанавливаем начальное положение реле (закрытое)
Если к реле будет подключена нагрузка(например, лампочка), то после запуска скетча она будет включаться и выключаться каждые 5 секунд
Для изменения периода мигания нужно изменить параметр функции delay(): поставив 1000 миллисекунд, выполучите 1 секунду задержки
В реальных проектах реле включается в ответ на обнаружение каких-либо внешних событий через подключение датчиков
*/
#define PIN_RELAY 5 // Определяем пин, используемый для подключения реле
// В этой функции определяем первоначальные установки
void setup()
{
pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход
digitalWrite(PIN_RELAY, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{
digitalWrite(PIN_RELAY, LOW); // Включаем реле - посылаем низкий уровень сигнала
delay(5000);
digitalWrite(PIN_RELAY, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
delay(5000);
}