цифровая электроника
вычислительная техника
встраиваемые системы

 

Подключаем джойстик к Arduino

Автор: Mike(admin) от 20-07-2014, 08:51

Для управления каким-либо устройством на основе Arduino, перемещающимся в двухмерной системе координат, отлично подойдет джойстик.


джойстик Arduino

В этой статье описывается процедура считывания аналоговым портом платы Arduino UNO R3 сигналов с джойстика. Аналоговые данные впоследствии транслируются в положение джойстика.


Используемый в данном случае двухосевой аналоговый джойстик позволяет достаточно легко осуществить управление по координатам X-Y. Потенциометры 10 КОм, подключенные к каждой оси, обеспечивают пропорциональную обратную связь для положений вверх/вниз и влево/вправо. Сам джойстик подпружиненный, поэтому он будет возвращаться в центральное состояние после его отпускания из определенной позиции. Также в нем имеется дополнительная кнопка оси Z.


Подключение Arduino к джойстику довольно простое и выполняется в соответствии со схемой, показанной ниже.


Подключаем джойстик к Arduino

Данные оси X заводятся на аналоговый вход A0, а оси Y – аналоговый вход A1. В коде функция analogRead() возвращает число от 0 до 1023, при этом число 512 будет соответствовать центральному положению джойстика по определенной оси. Для визуального контроля считывания показаний джойстика также подключим к цифровому выводу D13 светодиод через токоограничивающий резистор 1КОм. Также для визуализации нажатия кнопки джойстика можно подключить второй светодиод на D11.



int flashLED = 13;
int UD = 0;
int LR = 1;
int input1 = 0;
int input2 = 0;
int button=12;
int pushLED=11;
int buttonState=0;
void setup() {
pinMode(flashLED, OUTPUT);
pinMode(button,INPUT);
pinMode(pushLED, OUTPUT);
digitalWrite(button,HIGH);
}
int handleValue(int data) {
return (data * 9 / 1024) + 48;
}
void loop() {
input1 = analogRead(UD);
delay(100);
input2 = analogRead(LR);
digitalWrite(flashLED, HIGH);
delay(input1);
digitalWrite(flashLED, LOW);
delay(input2);
buttonState = digitalRead(button);
if (buttonState == LOW) {
digitalWrite(pushLED, HIGH);
}
else {
digitalWrite(pushLED, LOW);
}
}



<Источник>


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

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