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

 

Подключаем джойстик к 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



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


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

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

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