The Best College Academy of Our Small City

ELIN - SMK Negeri 1 Krangkeng Teknik ELektronika Industri

Pemograman dasar Arduino Joystick Shield v2.4

Saturday, October 3, 2020

 Dalam tutorial ini kita akan melihat bagaimana menggunakan Arduino Joystick Shield.Arduino Joystick Shield v2.4 menyediakan tujuh sakelar tombol tekan sesaat (enam tombol dan satu tombol terpisah di bawah joystick) dan joystick ibu jari dengan dua potensiometer. Joystick dapat digunakan untuk mengontrol keluaran seperti melodi atau piksel pada layar. Tombol-tombol tersebut dapat digunakan untuk navigasi atau kontrol permainan.

Catatan: Papan Arduino standar tidak akan mendukung pelindung joystick dengan LCD Nokia 5110. Ini karena pasokan Arduino 3,3 V standar hanya mampu memasok 50 mA, dan lampu latar Nokia 5110 membutuhkan lebih banyak arus. 



Peralatan

1 x Arduino Uno
1 x Arduino Joystick Shield v2.


Percobaan 1: Baca nilai joystick

Joystick memiliki dua potensiometer, yang Anda sambungkan ke pin analog A0 dan A1 di Arduino Anda. 


Nilai A0 sesuai dengan posisi X. Nilai A1 sesuai dengan posisi Y. Untuk membaca nilai analog ini, gunakan fungsi AnalogRead (). 

Langkah:

  1. Pasang pelindung joystick Anda ke papan Arduino.
  2. Hubungkan papan Arduino Anda ke PC Anda.
  3. LED akan menyala pada pelindung joystick Anda, menunjukkan bahwa itu berfungsi dengan baik.
  4. Tulis sketsa dan kompilasi sebelum diunggah ke papan Anda; itu praktik yang baik untuk menyusun sketsa Anda sebelum mengunggah.
  5. Setelah sketsa diunggah, jalankan monitor serial untuk mengamati nilainya.
  6. Gerakkan joystick ke arah yang berbeda dan Anda akan melihat bahwa nilai pada monitor serial akan berubah.

Anda dapat menggerakkan joystick dalam 8 arah: atas, kanan-atas, kanan, kanan-bawah, bawah, bawah-kiri, kiri, kiri-atas. Jika nilai berubah pada monitor serial Anda, perisai Anda berfungsi dengan baik.

Kode



// X values will be read from pin 0 and Y from pin 1

#define PIN_ANALOG_X 0

#define PIN_ANALOG_Y 1

 

void setup() {

 // Start serial because we will observe values at serial monitor

 Serial.begin(9600);

}

 

void loop() {

 // Print x axis values

 Serial.print("x: ");

 Serial.println(analogRead(PIN_ANALOG_X));

 // Print y axis values

 Serial.print("y: ");

 Serial.println(analogRead(PIN_ANALOG_Y));

 

 // Some delay to clearly observe your values on serial monitor.

 delay(500);

}

Percobaan 2: Baca sakelar tombol tekan joystick

Sakelar tombol tekan hanya terhubung ke pin I / O digital Arduino seperti yang ditunjukkan pada tabel di bawah ini:


Saat Tombol A ditekan, sinyal digital akan dikirim ke D2 dan seterusnya. Kami akan menggunakan fungsi digitalRead () untuk menentukan status tombol.

Karena tidak ada resistor yang terhubung ke tombol-tombol ini pada pelindung joystick, Anda harus mengaktifkan resistor tarik pada Arduino Anda. Di bawah ini adalah kode untuk mengaktifkan resistor pullup dan membaca nilai digital.

Setiap kali pengguna menekan tombol tekan, Arduino akan menampilkan nilai tombol pada monitor serial.

Langkah

  1. Pasang pelindung joystick Anda di atas papan arduino.
  2. Hubungkan papan Arduino Anda ke PC Anda.
  3. Led akan menyala pada pelindung joystick Anda yang menunjukkan bahwa itu berfungsi dengan baik.
  4. Tulis sketsa dan kompilasi sebelum mengunggah ke papan Anda (praktik yang baik untuk menyusun sketsa Anda sebelum mengunggah).
  5. Setelah sketsa diunggah, jalankan monitor serial untuk mengamati nilainya.
  6. Tekan sembarang tombol pada joystick Anda dan ini akan menampilkan tombol mana yang ditekan.

Kode

#define BUTTON_UP 2

#define BUTTON_RIGHT 3

#define BUTTON_DOWN 4

#define BUTTON_LEFT 5

#define BUTTON_E 6

#define BUTTON_F 7



#define DELAY 500



void setup() {

 Serial.begin(9600);



 // to enable pull up resistors first write pin mode

 // and then make that pin HIGH

 pinMode(BUTTON_UP, INPUT);

 digitalWrite(BUTTON_UP, HIGH);



 pinMode(BUTTON_RIGHT, INPUT);

 digitalWrite(BUTTON_RIGHT, HIGH);



 pinMode(BUTTON_DOWN, INPUT);

 digitalWrite(BUTTON_DOWN, HIGH);



 pinMode(BUTTON_LEFT, INPUT);

 digitalWrite(BUTTON_LEFT, HIGH);



 pinMode(BUTTON_E, INPUT);

 digitalWrite(BUTTON_E, HIGH);



 pinMode(BUTTON_F, INPUT);

 digitalWrite(BUTTON_F, HIGH);

}
void loop() {

 if(digitalRead(BUTTON_UP) == LOW) {

   Serial.println("Button A is pressed");

   delay(DELAY);

 }

 else if(digitalRead(BUTTON_RIGHT) == LOW) {

   Serial.println("Button B is pressed");

   delay(DELAY);

 }

 else if(digitalRead(BUTTON_DOWN) == LOW) {

   Serial.println("Button C is pressed");

   delay(DELAY);

 }

 else if(digitalRead(BUTTON_LEFT) == LOW) {

   Serial.println("Button D is pressed");

   delay(DELAY);

 }

 else if(digitalRead(BUTTON_E) == LOW) {

   Serial.println("Button E is pressed");

   delay(DELAY);

 }

 else if(digitalRead(BUTTON_F) == LOW) {

   Serial.println("Button F is pressed");

   delay(DELAY);

 }

}