Joystick

Joystick

A modul a 80-as, 90-es évek feelingjét adja vissza, egyben pedig egy univerzális kezelőszerv. Egy nyomógombot is magába foglal az iránykijelölésen túl. Az iránymegjelelölések (x, y) beolvasása analóg-jeleken keresztül történik, így a négy fő irányon kívül a pozíciómeghatározás meglehetősen rugalmas lehet.

pinleírás
GNDGrund
+5VTáp
VRxAnalóg (0..1024) X pozíció komponens
VRyAnalóg (0..1024) Y pozíció komponens
SWDigitális jel (a gomb lenyomása után)

Joystick

A nyomógombbal az a tapasztalatom, hogy szeret "duplázni", azaz gyorsan egymást követően több impulzust is hajlamos kiadni. Ezen kívül az impulzusok meglehetősen rövidek, érdemes ezért interrupt-ra pakolni őket. A példaprogramot ez alapján írtam.

Joystick vezetékezés

// ob121.com examlpe for joystick (with interrupt)
 
// digital pins
#define joystick_key 2  // Joystick "key" pin 
 
// analog pins
#define joystick_x 0  // Joystick "x" analog pin
#define joystick_y 1  // Joystick "y" analog pin
 
int  test;
bool joystick_key_old;
 
 
void setup() {
  test = 0;
  pinMode(joystick_key, INPUT);
  attachInterrupt(digitalPinToInterrupt(joystick_key), change_mode, HIGH);  // interrupt for joystick "key"
  digitalWrite(joystick_key, HIGH);
  Serial.begin(115200);
}
 
void loop() {
 
  // nop
;
 
 
 
}
 
void change_mode() {
  if (digitalRead(joystick_key) and not(joystick_key_old)) {   // only by trigger "high"
    test++; 
    Serial.print("Pressed:  ");
    Serial.print(test);
    Serial.print("\n");
 
  }
  joystick_key_old = digitalRead(joystick_key);    // flash 
  delay(1000);                                     // waiting, because the key "like" the "dupled" press
}