Skocz do zawartości

Joystick Arduino - zapytanie


kisiel507

Pomocna odpowiedź

Witam. 🙂

Na forum jestem od dawna, ale dopiero teraz postanowiłem coś napisać. Tak jak w temacie moje zapytanie będzie dotyczyło joysticka do arduino. Zakupiłem ostatnio kilka do sterowania moim projektem (jak ukończę, to oczywiście wstawię na forum ) i chciałbym się dowiedzieć, czy może ktoś próbował, albo gdzieś słyszał czy można ten joystick przerobić tak, aby on nie odbijał, tzn. żeby pozostawał w ostatnim położeniu i nie wracał do punktu centralnego??

Czekam na odpowiedzi i pomoc 😉

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Joy to nie przycisk, bez przeróbki mechanicznej to będzie trudno, bo przecież nie wiadomo kiedy stan ma być zapamiętany a kiedy nie. Może jakiś dodatkowy przycisk "wyzwalający" śledzenie lub po puszczeniu - "zamrażający" aktualne położenie joysticka mimo jego powrotu do neutrum?

Jeśli joystick ma służyć do pozycjonowania jakiegoś mechanizmu, to może zmień sposób sterowania na taki, by wychylanie powodowało przesuw - im głębiej wychylisz tym szybciej coś się przemieszcza a gdy puścisz i joystick powróci do pozycji neutralnej to mechanika zostaje w aktualnym położeniu. Gdy chcesz powrócić, przechylasz w drugą stronę.

Napisz co to będzie za urządzenie, może jeszcze coś komuś przyjdzie do głowy. Z drugiej strony joystick to nie stary budzik - bez przesady, jego rozmontowanie raczej nie spowoduje wybuchu setki elementów po pokoju.

Joystick zostający (bez sprężynek) jest stosowany np. w nadajnikach RC do zdalnego sterowania modeli. Tam gaz (obroty silnika samolotu) są właśnie tak zrobione by nie trzeba było siłować się przez 20 minut ze sprężynką, ale i tak wciąż trzymasz palce na drążkach. Zostawianie go bez nadzoru nie jest dobrym pomysłem, bo każdy powrót dłoni do drążka to lekkie przesunięcie pozycji, szczególnie gdy nie patrzysz na ręce.

Link do komentarza
Share on other sites

Mialyby one sluzyc do sterowania manipulatorem. Pomysl z predkoscia zaleznie od wychylenia joya jest ciekawy tylko nie bardzo wiem jakby to rozwiazac w programie 😉

Pomysl z przyciskiem tez na pewno zostanie wykorzystany ale do jednej dodatkowej funkcji.

Link do komentarza
Share on other sites

kupiłem dokładnie taki:

Joystick analogowy z przyciskiem dla Arduino FV GW

tresspasser

http://allegro.pl/joystick-analogowy-z-przyciskiem-dla-arduino-fv-gw-i4684826653.html

Edit:

dodam, że udało mi sie rozłożyć ten joystick i wyjąść z niego tą sprężynke. nie było łatwo ale się udało i działa tak jak chcialem 😉

Link do komentarza
Share on other sites

problem z joystickami jak na razie odszedł na bok 😉

teraz pojawił się zupełnie inny problem.

otóż tak:

napisałem program do obsługi serw za pomocą ty joysticków i dzieje się dziwna rzecz, a mianowicie serwa głupieją, tzn. cały czas drżą, a gdy przestawię joystick(max. wartość oporu) to tylko wtedy serwo ustawia się na max kat.

na lcd wyświetla mi aktualny kat położenia serwa i tam to się cuda dzieją: cyfry zmieniają się jak szalone 😃

poniżej wstawiam kod programu i proszę o jakąś pomoc.

#include

#include

LiquidCrystal lcd(32 ,30 ,28 ,26 ,24 ,22);

const int servo1 = 2;

const int servo2 = 3;

const int servo3 = 4;

const int servo4 = 5;

const int servo5 = 6;

const int servo6 = 7;

const int servo7 = 8;

const int servo8 = 9;

const int servo9 = 10;

const int servo10 = 11;

const int joyX1 = 0;

const int joyY1 = 1;

const int joyX2 = 2;

const int joyY2 = 3;

const int joyX3 = 4;

const int joyY3 = 5;

int servoVal;

Servo myservo1;

Servo myservo2;

Servo myservo3;

Servo myservo4;

Servo myservo5;

Servo myservo6;

Servo myservo7;

Servo myservo8;

Servo myservo9;

Servo myservo10;

void setup() {

myservo1.attach(servo1);

myservo2.attach(servo2);

myservo3.attach(servo3);

myservo4.attach(servo4);

myservo5.attach(servo5);

myservo6.attach(servo6);

myservo7.attach(servo7);

myservo8.attach(servo8);

myservo9.attach(servo9);

myservo10.attach(servo10);

lcd.begin(16, 2);

lcd.clear();

lcd.setCursor(4,0);

lcd.print("Pozycja");

lcd.setCursor(0,1);

lcd.print("Serwomechanizmow");

delay(3000);

lcd.clear();

}

void loop(){

//obrót

servoVal = analogRead(joyX1);

servoVal = map(servoVal, 0, 1023, 0, 10);

myservo1.write(servoVal);

lcd.setCursor(0,0);

lcd.print("I: ");

if (servoVal<100) lcd.write('0');

if (servoVal<10) lcd.write('0');

lcd.print(servoVal);

//koniec obrotu

//Pierwsza oś

servoVal = analogRead(joyY1);

servoVal = map(servoVal, 0, 1023, 0, 160);

myservo2.write(servoVal);

servoVal = analogRead(joyY1);

servoVal = map(servoVal, 0, 1023, 160, 0);

myservo3.write(servoVal);

lcd.setCursor(8,0);

lcd.print("II: ");

if (servoVal<100) lcd.write('0');

if (servoVal<10) lcd.write('0');

lcd.print(servoVal);

//Koniec Pierwsza oś

//Druga oś

servoVal = analogRead(joyX2);

servoVal = map(servoVal, 0, 1023, 0, 160);

myservo4.write(servoVal);

servoVal = analogRead(joyX2);

servoVal = map(servoVal, 0, 1023, 160, 0);

myservo5.write(servoVal);

lcd.setCursor(0,1);

lcd.print("III: ");

if (servoVal<100) lcd.write('0');

if (servoVal<10) lcd.write('0');

lcd.print(servoVal);

//Koniec Druga oś

//Trzecia oś

servoVal = analogRead(joyY2);

servoVal = map(servoVal, 0, 1023, 0, 160);

myservo6.write(servoVal);

servoVal = analogRead(joyY2);

servoVal = map(servoVal, 0, 1023, 160, 0);

myservo7.write(servoVal);

lcd.setCursor(9,1);

lcd.print("IV: ");

if (servoVal<100) lcd.write('0');

if (servoVal<10) lcd.write('0');

lcd.print(servoVal);

//Koniec Trzecia oś

//Obrót chwytaka

servoVal = analogRead(joyX3);

servoVal = map(servoVal, 0, 1023, 0, 160);

myservo8.write(servoVal);

//Koniec Obrót chwytaka

//Chwytak

servoVal = analogRead(joyY3);

servoVal = map(servoVal, 0, 1023, 0, 160);

myservo9.write(servoVal);

servoVal = analogRead(joyY3);

servoVal = map(servoVal, 0, 1023, 160, 0);

myservo10.write(servoVal);

//Koniec Chwytak

delay(15);

}

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.