Skocz do zawartości

Drążek pada ps2 - Sterowanie silnikami robota


silver2001

Pomocna odpowiedź

cześć wszystkim 🙂 kupiłem sobie pada bezprzewodowego od PS2 oraz arduino Uno i chce sterować nim mojego robota. "ogarnąłem" już przyciski, i bez problemu udaje mi się sterować nimi urządzenie, ale problem dotyczy joystkicków. nie wiem jak przerobić program z linku poniżej, by sterować 2 silnikami ( napędem robota ).

https://raw.githubusercontent.com/madsci1016/Arduino-PS2X/master/PS2X_lib/examples/PS2X_Example/PS2X_Example.ino

Chciałem zrobić w ten sposób, że sterując jednym z drążków będę sterował prędkością silników, dzięki czemu mój robot będzie się przemieszczał ( po prostu jechał 😋 ) do arduino podepnę sterownik silników L298N, który będzie sterował prędkością obu silników.

I pytanie : czy ktoś w miare "ogarnięty" w te klocki mógł by mi trochę przerobić ten program ?

Z góry dzięki za pomoc, każda odpowiedź na pytanie jest dla mnie bardzo cenna. Zbudowałem już robota i gdy znajdzie się program na ten joystick opublikuje go na forum 😃 .

Link do komentarza
Share on other sites

Generalnie Twój pomysł jest wykonywalny, zakładając że zastosowana biblioteka umożliwia odczytywanie stanu joysticków w postaci 'analogowej' (np. od 0 do 255).

Patrząc na przykład z symulacją myszki (https://github.com/madsci1016/Arduino-PS2X/blob/master/PS2X_lib/examples/PS2XMouse/PS2XMouse.ino) jest to możliwe.

W uproszczeniu odczytywanie położenia danego joysticka (jednej osi) sprowadza się do linijki

ps2x.analog(axis);

gdzie

axis to jedna ze stałych określonych w pliku nagłówkowym:

//These are analog buttons

#define PSAB_PAD_RIGHT 9

#define PSAB_PAD_UP 11

#define PSAB_PAD_DOWN 12

#define PSAB_PAD_LEFT 10

#define PSAB_L2 19

#define PSAB_R2 20

#define PSAB_L1 17

#define PSAB_R1 18

#define PSAB_GREEN 13

#define PSAB_RED 14

#define PSAB_BLUE 15

#define PSAB_PINK 16

#define PSAB_TRIANGLE 13

#define PSAB_CIRCLE 14

#define PSAB_CROSS 15

#define PSAB_SQUARE 16

Musisz popróbować który element joysticka odpowiada danej nazwie w kodzie (albo znaleźć dokument opisujący co jak się nazywa).

W tym momencie masz już w zmiennej wartość od 0 do 255 odpowiadającej położeniu gałki.

Wiesz jak to zamienić na prędkość obrotową silnika?

Link do komentarza
Share on other sites

Robotem chcesz sterować z wykorzystaniem mostka H (zakładam że rozumiesz jak on działa).

Masz dwa kanały, czyli musisz sterować łącznie sześcioma wyjściami: 2 dla kierunku i 1 PWM, razy dwa bo dwa kanały.

Prymitywne sterowanie możesz zrobić za pomocą dwóch gałek: jedna ustala prędkość dla obu silników, a druga (kierunek) ustala (w jakiś określony sposób) różnicę pomiędzy wypełnieniem poszczególnych kanałów.

W pseudokodzie to będzie coś takiego jak poniżej. Napisany kod pozwala tylko na jazdę do przodu. Dodanie jazdy do tyłu opierałoby się na sprawdzaniu wartości gałki prędkości + uwzględnianiu stanu gałki kierunku.

offset = 127;
galkaPredkosc = ps2x.analog(galka1) - offset;
galkaKierunek = ps2x.analog(galka2) - offset;
pwmKanal1 = pwmKanal2 = galkaPredkosc;
pwmKanal1 += galkaKierunek;
pwmKanal2 -= galkaKierunek;

//sprawdzenie czy wartosci pwm są w zakresie 0-255...
ustawPWM1(pwmKanal1);
ustawPWM2(pwmKanal2);
  • Pomogłeś! 1
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

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.