In acest articol vom folosi un joystick impreuna cu Arduino. 

    Un joystick este compus in 2 potentiometre pentru axele X si Y si un buton. In pozitia de repaus cursorul celor 2 potentiometre se afla la mijloc, prin actionarea pe una in axele X sau Y valoarea se va modifica in sus sau in jos. Pentru a putea folosi valorile returnate de catre joystick vom folosi 2 intrari analogice iar pentru buton vom utiliza o intrare digitala. In cazul de fata vom folosi pinii analogici 0 si 1 iar pentru buton pinul digital 2. 

    Alimentarea acestui joystick se face cu +5V.

    Pretul acestui joystick este de 10 lei si poate fi cumparat de aici.

    Joystickul folosit in acest articol este cel in fotografia e mai jos:

    Valorile obtinute de la joystick le vom testa prima data pe terminalul serial. Sketchul folosit este mai jos:

int buton = 2;
int axa_X = A0;
int axa_Y = A1;
int procent_X;
int procent_Y;

void setup() {
  pinMode(buton, INPUT);
  digitalWrite(buton, HIGH);
  pinMode(axa_X, INPUT);
  pinMode(axa_Y, INPUT);
  Serial.begin(9600);
  Serial.println("Testare joystick");
  delay(2000);
}

void loop() {
  Serial.print("Buton:  ");
  Serial.println(digitalRead(buton));
  Serial.print("Axa X: ");
  procent_X = map(analogRead(axa_X), 0, 1023, 0, 100);
  Serial.print(procent_X);
  Serial.println("%");
  Serial.print("Axa Y: ");
  procent_Y = map(analogRead(axa_Y), 0, 1023, 0, 100);
  Serial.print(procent_Y);
  Serial.println("%");
  delay(500);
}

    Putem afisa aceste valori si pe un isplay LCD. Pentru acest lucru vom folosi afisajul folosit in acest articol

    Sketchul din acest exemplu este mai jos:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4);
int buton = 2;
int axa_X = A0;
int axa_Y = A1;
int procent_X;
int procent_Y;

void setup() {
  pinMode(buton, INPUT);
  digitalWrite(buton, HIGH);
  pinMode(axa_X, INPUT);
  pinMode(axa_Y, INPUT);
  lcd.begin();
  lcd.backlight();
  lcd.setCursor(1, 0);
  lcd.print("Testare joystick");
  lcd.setCursor(3, 1);
  lcd.print("pe afisaj LCD");
  lcd.setCursor(1, 3);
  lcd.print("electronicstore.ro");
  delay(3000);
  lcd.clear();
}

void loop() {
  lcd.setCursor(0, 0);
  if (digitalRead(buton) == LOW) {
    lcd.print("Buton apasat");
    } else {lcd.print("              ");}
 
  lcd.setCursor(0, 1);
  lcd.print("Axa X: ");
  procent_X = map(analogRead(axa_X), 0, 1023, 0, 100);
  lcd.print(procent_X);
  lcd.print("%");
  
  lcd.setCursor(0, 2);
  lcd.print("Axa Y: ");
  procent_Y = map(analogRead(axa_Y), 0, 1023, 0, 100);
  lcd.print(procent_Y);
  lcd.print("%");
  lcd.setCursor(0, 3);
  lcd.print("electronicstore.ro");
}

    Un filmulet cu acest montaj poate fi vazut mai jos:

 

 

Nu sunt comentarii

Acest website foloseste cookie-uri pentru o experienta placuta in timpul navigarii.