джойстик для ардуино
- Войдите на сайт для отправки комментариев
Втр, 29/10/2019 - 09:56

Купил парочку джойстиков для опытов, до этого пользовался бу из игровых пультов.
Кнопка устойчиво срабатывает только из среднего положения рычажка. По XY можно получить только 0,512,1023. Этакая 8 позиционная кнопка. Так и должно быть при такой ценовой доступности?
Нет, так не должно быть. У меня работают нормально.
//const int switchPin = 8; // кнопка джойстика const int pinX = A1; // Ось X джойстика const int pinY = A2; // Ось Y джойстика //const int ledPin = 13; void setup() { // pinMode(ledPin, OUTPUT) pinMode(pinX, INPUT); pinMode(pinY, INPUT); // pinMode(switchPin, INPUT); // digitalWrite(switchPin, HIGH); // включаем встроенный подтягивающий резистор Serial.begin(9600); } void loop() { // int ledState = digitalRead(switchPin); // считываем состояние кнопки //digitalWrite(ledPin, ledState); // вкл./выкл. светодиод по нажатию кнопки int X = analogRead(pinX); // считываем аналоговое значение оси Х int Y = analogRead(pinY); // считываем аналоговое значение оси Y Serial.print(X); // Выводим значение в Serial Monitor Serial.print("\t"); // табуляция Serial.println(Y); delay(250); }Скетч взял как раз для них из интернета, исключив кнопку. Паузу поставить между считываниями?
Позже попробую тестером сопротивления померять при поворотах ручки.
Скетч нормальный. Строки 8 и 9 можно выкинуть. pinMode нужно только для digitalRead/digitalWrite.
Походу у вас упрощенный джойстик с кнопками вместро потенциометров. Так что других результатов вы, скорее всего, не получите.
Хотя.. А как он у вас подключен?
При какой ценовой доступности... Вообще - я вижу кнопку под джойстиком. Думаю, что там кнопки коммутируют постоянные резисторы и "направление" вычисляется отклонением analogRead() от 512 ед. вверх и вниз.
30 рублей штука. Осмотрел подробно, стоят переменники на 10 кОм. Замеры сопротивления между крайним и центральным выводом дают 0, 3 с копейками килоома и 4,68. Между, проскакивают единичные промежуточные значения (в мониторе тоже были единичные числа отличные от 0,512,1023). Кнопка вынесена вбок, отсюда такой изврат при нажатиях.
Вспомнил, не могу найти, в форумах уже кто то ругался на подобную хрень.
:) Это наверное специальный джойстик, реагирующий на направления отжатия ручки, а не угол отклонения.
Не, знаю, у меня на вид такие же - нормально пашут.
Взял второй на эксперимент. Не ах, но гораздо лучше, появились разные комбинации чисел...значит вначале брак попался.
Тут на форуме уже кто-то искал "более правильные" джойстики. Вот http://arduino.ru/forum/programmirovanie/nastroika-dzhoistika У этих на самом деле значения меняются как положено, плавно, по всему диапазону, но в небольшом диапазоне угла отклонения от центра. Т.е. у многих 0 и 1023 достигаются не в физически крайних положениях, а заметно раньше.
Хорошему джойстику попался плохой хозяин. Надо поменять хозяина и все будет нормально.