Настройка джойстика

Tik
Offline
Зарегистрирован: 14.01.2014

Доброго времени суток! Хочется реализовать некий проект на Ардуино, но появились не которые затруднения.

Цель: (Грубо говоря) машинку на пулте управления(в качестве пульта выступает джойстик)

И как этот джойстик запрограмировать, что бы с его помощью можно было управлять машинкой.

Заранее спасибо за помощь!

maksim
Offline
Зарегистрирован: 12.02.2012

Tik пишет:

И как этот джойстик запрограмировать

Никак. Он не программируется.

Начните с этого.

А тут вы найдете большинство ответов по коду.

vvadim
Offline
Зарегистрирован: 23.05.2012

Раз вам трудно, я за вас погуглил http://cxem.net/arduino/arduino68.php http://arduino.cc/en/Tutorial/JoyStick

Когда с джойстиком разберётесь, то легко найдёте, как с помощью ардуино и джойстика управлять dc мотором, серво и шаговиком. А потом задавайте вопросы, если что то не получается. 

Удачи.

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

Чтоб не пладить темы, спрошу тут :)

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

Как понизить чувствительность и растянуть рабочий сетор от края до края?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А что, map уже не помогает?

 

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

map помогает, но беда в том, что чувствительность сильная. Чуть тронул и уже в "пределе", хотя до физического предела еще давить и давить.

Вот и спрашиваю, есть ли метода растянуть сектор действия у джойстика?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Есть

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Разумеется настроить джойстик, а точнее написать в программе блок который переводит значение получаемое с джойстика в значение необходимое для управление. Составьте таблицу соответсвия и нарисуйте на листе бумаги график.

ПС: Скорее у вас с алгеброй хорошо, но почему-то без знаний алгебры ничего не получается.

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

DetSimen пишет:

Есть

Спасибо! Я так и думал!

urus_vp
Offline
Зарегистрирован: 14.12.2015

vdm, так Вам значит никто не помог ? :)

испытаю туже проблему... физический диапазон очень небольшой... и джойстик получается сверх чувствителен... пограничные значения получаю сдвинув стик меньше чем на половину допустимого смещения.

Вам удалось разобраться? 

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Единственный способ - заменить переменные резисторы на джойстике. Потому как те, что там стоят, имеют очень маленький угол хода 0-100%. 

urus_vp
Offline
Зарегистрирован: 14.12.2015

anatoli_nik пишет:

Единственный способ - заменить переменные резисторы на джойстике. Потому как те, что там стоят, имеют очень маленький угол хода 0-100%. 

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

это вообще реально разобрать без потерь? там с виду только отпаять по три ножки для каждого резистора... но как устроено крепление - это не очевидно на первый взгляд.

а если менять, то на какие конкретно? не кинете ссылкой?

P.S.

вообще странно это всё :(

vvadim
Offline
Зарегистрирован: 23.05.2012

там угол поворота  20 гр на сторону.что из него вы хотите вытащить))))

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

urus_vp пишет:

vdm, так Вам значит никто не помог ? :)

испытаю туже проблему... физический диапазон очень небольшой... и джойстик получается сверх чувствителен... пограничные значения получаю сдвинув стик меньше чем на половину допустимого смещения.

Вам удалось разобраться? 

Да, я пришел к логическому выводу, что существующие ардуино-стики - сущее гумно. Ничего вразумительного от них не добиться. Нужно полностью менять кинематику и уходить на более "профессиональные" джойстики.

urus_vp
Offline
Зарегистрирован: 14.12.2015

vvadim пишет:

там угол поворота  20 гр на сторону.что из него вы хотите вытащить))))

Так, еще раз про проблему )

Я хочу чтобы в крайних физических положениях я получал крайние цифры, т.е. напримео по Х-у в крайнем левом был Ноль, а в крайнем правом 1023.

Сейчас же я получаю Ноль чуть отклонив влево, и 1023 чуть отклонив вправо.

Инет наполнен видео роликами, где народ крутит джойстик и мягко управляет сервами в 2ух осном крепеже... я хочу также ).

urus_vp
Offline
Зарегистрирован: 14.12.2015

vdm пишет:

urus_vp пишет:

vdm, так Вам значит никто не помог ? :)

испытаю туже проблему... физический диапазон очень небольшой... и джойстик получается сверх чувствителен... пограничные значения получаю сдвинув стик меньше чем на половину допустимого смещения.

Вам удалось разобраться? 

Да, я пришел к логическому выводу, что существующие ардуино-стики - сущее гумно. Ничего вразумительного от них не добиться. Нужно полностью менять кинематику и уходить на более "профессиональные" джойстики.

Какой выбрали джойстик?

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

urus_vp пишет:
Так, еще раз про проблему ) Я хочу чтобы в крайних физических положениях я получал крайние цифры, т.е. напримео по Х-у в крайнем левом был Ноль, а в крайнем правом 1023. Сейчас же я получаю Ноль чуть отклонив влево, и 1023 чуть отклонив вправо. Инет наполнен видео роликами, где народ крутит джойстик и мягко управляет сервами в 2ух осном крепеже... я хочу также ).

Это фантастика!

urus_vp пишет:
Какой выбрали джойстик?

К сожалению, пока никакой... На работе оптимизировали отдел, из 11 человек осталось 4... Так что пока не до джойстиков

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

urus_vp пишет:

Какой выбрали джойстик?

Попробуйте какой-нибудь геймпад расковырять.  Может там что-нибудь получше. Расскажете :)

b707
Offline
Зарегистрирован: 26.05.2017

urus_vp пишет:
vvadim пишет:

там угол поворота  20 гр на сторону.что из него вы хотите вытащить))))

Так, еще раз про проблему ) Я хочу чтобы в крайних физических положениях я получал крайние цифры

не надо "еще раз". Вы, видимо, не поняли. что вам написали.

Перевожу - в джойстике стоят переменники, в которых максимальное сопротивление достигается уже при повороте на маленький угол, а весь последующий физический ход уже ничего не меняет. Это аппаратная особенность, понимаете?

никакими программными трюками этого не поправить. Либо менять (физически менять) переменники в джойстике, либо искать другой. более качественный джойстик.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

b707 пишет:

никакими программными трюками этого не поправить. Либо менять (физически менять) переменники в джойстике, либо искать другой. более качественный джойстик.

Можно поправить программными трюками. Например - джойстик сразу достигает максимума, а программно, в зависимости от времени удержания, добавляются значения. Так же и обратный ход. Но скорость такого джойстика будет зависить от программных установок времени. По хорошему получится 4 кнопки.

b707
Offline
Зарегистрирован: 26.05.2017

mykaida пишет:

b707 пишет:

никакими программными трюками этого не поправить. Либо менять (физически менять) переменники в джойстике, либо искать другой. более качественный джойстик.

Можно поправить программными трюками. Например - джойстик сразу достигает максимума, а программно, в зависимости от времени удержания, добавляются значения. Так же и обратный ход. Но скорость такого джойстика будет зависить от программных установок времени. По хорошему получится 4 кнопки.

по хорошему тут и джойстик не нужен - только кнопки оставить и все :)

urus_vp
Offline
Зарегистрирован: 14.12.2015

Коллеги, спасибо за советы!
Сегодня прикупил еще два, попробую, может дело в конкретных экземплярах ), но чтото мало верится )
Отпишусь...

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

urus_vp пишет:
Коллеги, спасибо за советы! Сегодня прикупил еще два, попробую, может дело в конкретных экземплярах ), но чтото мало верится ) Отпишусь...

Ежики плакали, кололись, но продолжали есть кактус.

Я вот такие планирую заказать:
https://ru.aliexpress.com/item/Radio-rocker-1pair-Pair-Transmitter-Gimba...

urus_vp
Offline
Зарегистрирован: 14.12.2015

новые джойстики ведут себя также... минус в том, что они выглядят точно также как и ранее проверяемые... :(

видать с одной Али продавца тянутые :(

в общем по X вроде бы лучше, но по Y таже история :(

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

На работе покупали джойстики (10 шт), но было пофиг на характеристики, та кдля удобства как 4 кнопки. Пришло три разновидности, от Robotdin arduino и еще какое-то г-но. Так во всех одно и тоже - узкий диапазон. Скорее всего подойдет https://voron.ua/catalog/024755 что-то подобное им (не знаю откуды вы), крепление там защелка входит в прорезь резистора.

Но крайние положения не будут соответствовать 0-1023, без специальных мер, например 

Вот нутряк родного резистора 

PS. Если не забуду, завтра посмотрю что за резисторы стоят в джойстике геймпада (валяется на работе). 

vdm
vdm аватар
Offline
Зарегистрирован: 29.08.2016

anatoli_nik пишет:

На работе покупали джойстики (10 шт), но было пофиг на характеристики, та кдля удобства как 4 кнопки. Пришло три разновидности, от Robotdin arduino и еще какое-то г-но. Так во всех одно и тоже - узкий диапазон. Скорее всего подойдет https://voron.ua/catalog/024755 что-то подобное им (не знаю откуды вы), крепление там защелка входит в прорезь резистора.

Но крайние положения не будут соответствовать 0-1023, без специальных мер, например 

Вот нутряк родного резистора 

PS. Если не забуду, завтра посмотрю что за резисторы стоят в джойстике геймпада (валяется на работе). 

 

Не подойдет.

1. У него ход 270 градусов,
2. Рабочий ход 240 градусов, в нужно 60, максимум 90.
3. Ну и вишенка на торте... Время жизни - 200 циклов...

Data Sheet 

Если заморачиваться с заменой потенциометров, то нужно что-то типа такого:

https://ru.aliexpress.com/item/WF-WRB1338N-AV-10F-B5K-B502-B5K-Potentiom...

Очень похоже на то, что ставится на "большие" джойстики. Но ценник...

leolem
Offline
Зарегистрирован: 22.06.2019
#include <Servo.h>

int joyX = 0;
int angl = 0;
Servo mservo;
void setup()
{
  mservo.attach(9);
  pinMode(joyX,INPUT);
  Serial.begin(9600);
}
void loop()
{
  int val=(analogRead(joyX)/64)-8;
  if (val>0)
  {
    angl = angl+abs(val);
  }
  else
  {
    if(val<0)
    {
      angl = angl-abs(val);
    }
  } 
}

if (angl<0)angl=0;
if (angl>180) angl=180;
Serial.print("Power:")
Serial.println(val);
Serial.print("Angle:")
Serial.println(angl);
mservo.write(angl);
int spd = 500;
if(val!=0)
{
  spd = 600/abs(val);
}
Serial.print("Speed:");
Serial.println(spd);
Serial.println("--------");
delay(spd);

Выходит ошибка:

Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno"
  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno"
sketch_jul06a:28: error: expected unqualified-id before 'if'( в "if (angl<0)angl=0; ")
 
Подскажите пожалуйста чего делать.
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Для начала четко по-русски написать, чего Вы хотите добиться.

А потом сравнить то, что написано по-русски, с тем, что написано на Си++.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Строки с 28 по 43 должны находится внутри функции loop() (в теле функции), а они у вас снаружи.

leolem
Offline
Зарегистрирован: 22.06.2019

Jeka_M пишет:

Строки с 28 по 43 должны находится внутри функции loop() (в теле функции), а они у вас снаружи.

 Я сделал то что вы говорили, скетч загрузился но программа не работает

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Это потому, что не сделали того, что написано в №27.

leolem
Offline
Зарегистрирован: 22.06.2019

Я хочу управлять серво приводом с помощью джойстика.

(Язык не С++ а ардуино 1.0.6)