Zaloguje się
or
Tel +48 698 615 740

Dwuosiowy modułu joysticka XY

28 października, 2021

W artykule omówimy połączenie, zostanie przedstawione wczytywanie danych z joysticka, które zostaną wykorzystane do pokazywania jego aktualnej pozycji np. góra, dół, lewo, prawo lub wciśnięty. Znajdziecie tutaj również przykładowe menu na wyświetlaczu lcd, które będzie obsługiwane właśnie przy pomocy joysticka.

Spis treści

  • Specyfikacja
  • Podłączenie do arduino
  • Wyświetlanie wartości z joysticka
  • Działanie przycisku joysticka
  • Wyświetlanie położenia joysticka
  • Gotowe menu do wykorzystania
  • Pliki do pobrania

Specyfikacja

Wymiary: 4X2.6X3.2 CM

2 potencjometry na 2 osie

1 przełącznik

Złącze: + 5Vcc-GND-VRx-VRy-SW

Podłączenie do arduino

Moduł joysticka jest bardzo prosty do podłączenia, oraz łatwo odczytywać z niego wartości które później będziemy mogli wykorzystać, wystarczą nam podstawowe komendy i nie będzie potrzeby pobierania oraz korzystania z bibliotek. Zacznijmy więc od połączenia, użyjemy do tego płytki stykowej chodź moglibyśmy podłączyć moduł bezpośrednio do arduino, płytka stykowa przyda nam się później kiedy będziemy podłączali wyświetlacz OLED, ale o tym później. Podłączamy na początku zasilanie do płytki stykowej oraz uziemienie, następnie GND z modułu do uziemienia, oraz +5V do zasilania na płytce. Zajmiemy się teraz trzema pozostałymi pinami VRX, VRY i SW. Wystarczy podpiąć VRX do A1, VRY do A0 i SW do pinu 8, połączymy je tak jak na poniższym schemacie.

Wyświetlanie wartości z joysticka

Po podłączeniu przechodzimy do zaprogramowania modułu, pobieranie wartości jest bardzo proste i wystarczą nam podstawowe komedny z arduino. Zacznijmy od zdefiniowania potrzebnych nam pinów będą to VRX odpowiadający za oś X, VRY odpowiadający za oś Y i SW jako przycisk.

#define VRX A1
#define VRY A0
#define SW 8

W funkcji setup rozpoczynamy transjmisję na porcie szeregowym, ustawimy nasze piny A0 i A1 jako wejście, a pin 8 jako przycisk.

void setup() {
  Serial.begin(9600);
  pinMode(VRX, INPUT);
  pinMode(VRY, INPUT);
  pinMode(SW, INPUT_PULLUP);
}

Przejdźmy teraz do funkcji loop w której będą odczytywane wartości z joysticka, a następnie zostaną one wyświetlone w monitorze portów szeregowych. Musimy rozpocząć od zadeklarowania zmiennych, a nastęnie wyświetlimy je na ekranie.

void loop() {
  int os_x = analogRead(VRX);//deklarujemy zmienną  os_x
  int os_y = analogRead(VRY);//deklarujemy zmienną  os_y

  Serial.print("OS X: ");
  Serial.print(os_x);//wyswietlamy wartosc osi x z joysticka
  Serial.print(" OS Y: ");
  Serial.print(os_y);//wyswietlamy wartosc osi y z joysticka
  Serial.println();
}

Po wgraniu programu do arduino, włączamy monitor portu szeregowego i powinniśmy ujrzeć wartości odczytane z joysticka, kiedy jest on na pozycji zero w moim wypadku zwraca takie wartości.

Teraz w zależności od tego w jaką stronę ustawimy joystick wartości te ulegną zmianie, daje nam to wiele możliwości, ale nie zapominajmy o naszym przycisku bo przecież nie został on wcale użyty, a warto by było poznać jego działanie.

Działanie przycisku joysticka

Dopiszemy teraz do naszego programu instrukcję warunkową która poinforumuje nas o wciśnięciu przycisku.

if(digitalRead(SW) == LOW) {//jeżeli przycisk został wciśnięty wyświetl napis
    Serial.println("Wcisniety");
  }

Wystarczy wkleić to do naszego programu i teraz po naciśnięciu joysticka, w konsoli powina się wyświetlić wiadomość ‘Wcisniety’.

Wyświetlanie położenia joysticka

Kiedy znamy już podstawowe działanie naszego modułu, możemy przejść do wykorzystania tej wiedzy w praktyce i stworzymy proste wyświetlanie pozycji naszego joysticka w monitorze portów wykorzystując powyższy program.

Będziemy musieli dopisać do programu który robiliśmy wyżej instrukcje warunkowe if które pozwolą na wyświetlenie tekstu w jakiej pozycji jest joystick. Na początku będziemy musieli ruszać joystickiem i sprawdzać jego wartości np. Kiedy damy do góry wartość w skoczy do zera, wystarczy dać warunek jeżeli mniejszy od zera wyświetl napis góra, na tym będzie polegał nasz program. Po sprawdzeniu wszystkich wartości oraz zrobieniu instrukcji warunkowych możemy za komentować wyświetlanie wartości w konsoli, a całość powinna wyglądać tak jak poniżej.

#define VRX A1
#define VRY A0
#define SW 8

void setup() {
  Serial.begin(9600);
  pinMode(VRX, INPUT);
  pinMode(VRY, INPUT);
  pinMode(SW, INPUT_PULLUP);
}

void loop() {
  int os_x = analogRead(VRX);
  int os_y = analogRead(VRY);

//  Serial.print("OS X: ");
//  Serial.print(os_x);
//  Serial.print(" OS Y: ");
//  Serial.print(os_y);
//  Serial.println();

  if(os_x < 10) {
    Serial.println("gora");
  } else if(os_x > 600) {
    Serial.println("dol");
  } else if(os_y > 600) {
    Serial.println("lewo");
  } else if(os_y < 10) {
    Serial.println("prawo");
  }
}

Gotowe menu do wykorzystania

Dodatkowo przygotowałem przykładowe menu które można stworzyć i obsługiwać je przy pomocy joysticka, będzie ono wyświetlane na wyświetlaczu oled 0.96 (połączenie i obsługę znajdziecie tutaj). Do połączenia które macie obecnie wystarczy podpiąć wyświetlacz i wszystko powinno działać, za pomocą joysticka możemy poruszać się między opcjami, oraz menu, zatwierdzamy i wychodzimy naciskając joystick, a wartości zmieniamy dając joystick do góry lub do dołu.

Menu możesz pobrać klikając pobierz.

Poniżej znajduje się schemat połączenia.

Do pobrania

Sticky
Możliwość komentowania Dwuosiowy modułu joysticka XY została wyłączona
Adrian Wojtala

Adrian Wojtala

Ma 21 lat. Studiuje informatykę na Uniwersytecie DSW, ukończył technikum o profilu technik-informatyk. Interesuje się programowaniem i w przyszłości ma plan zostać back-end developerem. Swoją przygodę z Arduino rozpoczął podczas praktyk od września 2021 r.

Comments are closed.

Strona korzysta z plików cookies w celu realizacji usługi i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.