джойстик для ардуино

leks
Offline
Зарегистрирован: 22.10.2017

Купил парочку джойстиков для опытов, до этого пользовался бу из игровых пультов.

Кнопка устойчиво срабатывает только из среднего положения рычажка. По XY можно получить только 0,512,1023. Этакая 8 позиционная кнопка. Так и должно быть при такой ценовой доступности?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Нет, так не должно быть. У меня работают нормально.

leks
Offline
Зарегистрирован: 22.10.2017
//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);
}

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

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

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Скетч нормальный. Строки 8 и 9 можно выкинуть. pinMode нужно только для digitalRead/digitalWrite.

Походу у вас упрощенный джойстик с кнопками вместро потенциометров. Так что других результатов вы, скорее всего, не получите.

Хотя.. А как он у вас подключен?

sadman41
Offline
Зарегистрирован: 19.10.2016

При какой ценовой доступности... Вообще - я вижу кнопку под джойстиком. Думаю, что там кнопки коммутируют постоянные резисторы и "направление" вычисляется отклонением analogRead() от 512 ед. вверх и вниз.

leks
Offline
Зарегистрирован: 22.10.2017

30 рублей штука. Осмотрел подробно, стоят переменники на 10 кОм. Замеры сопротивления между крайним и центральным выводом дают 0, 3 с копейками килоома и 4,68. Между, проскакивают единичные промежуточные значения (в мониторе тоже были единичные числа отличные от 0,512,1023). Кнопка вынесена вбок, отсюда такой изврат при нажатиях.

leks
Offline
Зарегистрирован: 22.10.2017

Вспомнил, не могу найти, в форумах уже кто то ругался на подобную хрень.

:) Это наверное специальный джойстик, реагирующий на направления отжатия ручки, а не угол отклонения.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не, знаю, у меня на вид такие же - нормально пашут.

leks
Offline
Зарегистрирован: 22.10.2017

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

kalapanga
Offline
Зарегистрирован: 23.10.2016

Тут на форуме уже кто-то искал "более правильные" джойстики. Вот http://arduino.ru/forum/programmirovanie/nastroika-dzhoistika У этих на самом деле значения меняются как положено, плавно, по всему диапазону, но в небольшом диапазоне угла отклонения от центра. Т.е. у многих 0 и 1023 достигаются не в физически крайних положениях, а заметно раньше.

astwo
Offline
Зарегистрирован: 10.07.2019

Хорошему джойстику попался плохой хозяин. Надо поменять хозяина и все будет нормально.