Bab Iv
Bab Iv
PEMBAHASAN
= Mundur
= Belok Kanan
= Belok Kiri
32
33
Tabel Percobaan
NO DIGITAL JOYSTICK KONDISI ROBOT
Robot maju kedepan, akan terus
1 maju hingga tombol yang lain di
tekan
Robot mundur, akan terus mundur
2
hingga tombol selanjutnya ditekan
//right now, the library does NOT support hot pluggable controllers, meaning
//you must always either restart your Arduino after you conect the controller,
//or call config_gamepad(pins) again after connecting the controller.
int error = 0;
byte type = 0;
byte vibrate = 0;
34
int led=7;
int le=0;
void setup(){
Serial.begin(57600);
pinMode(led,OUTPUT);
if(error == 0){
Serial.println("Found Controller, configured successful");
Serial.println("Try out all the buttons, X will vibrate the controller, faster as you press
harder;");
Serial.println("holding L1 or R1 will print out the analog stick values.");
Serial.println("Go to www.billporter.info for updates and to report bugs.");
}
else if(error == 1)
Serial.println("No controller found, check wiring, see readme.txt to enable debug.
visit www.billporter.info for troubleshooting tips");
else if(error == 2)
Serial.println("Controller found but not accepting commands. see readme.txt to
enable debug. Visit www.billporter.info for troubleshooting tips");
else if(error == 3)
Serial.println("Controller refusing to enter Pressures mode, may not support it. ");
35
//Serial.print(ps2x.Analog(1), HEX);
type = ps2x.readType();
switch(type) {
case 0:
Serial.println("Unknown Controller type");
break;
case 1:
Serial.println("DualShock Controller Found");
break;
Serial.println("GuitarHero Controller Found");
break;
}
}
void loop(){
/* You must Read Gamepad to get new values
Read GamePad and set vibration values
ps2x.read_gamepad(small motor on/off, larger motor strenght from 0-255)
if you don't enable the rumble, use ps2x.read_gamepad(); with no values
if(ps2x.ButtonPressed(RED_FRET))
Serial.println("Red Fret Pressed");
if(ps2x.ButtonPressed(YELLOW_FRET))
Serial.println("Yellow Fret Pressed");
if(ps2x.ButtonPressed(BLUE_FRET))
Serial.println("Blue Fret Pressed");
if(ps2x.ButtonPressed(ORANGE_FRET))
Serial.println("Orange Fret Pressed");
if(ps2x.ButtonPressed(STAR_POWER))
Serial.println("Star Power Command");
motor1.run(BACKWARD);
motor2.run(BACKWARD);
}
if(ps2x.Button(PSB_PAD_DOWN)){
Serial.print("DOWN held this hard: ");
Serial.println(ps2x.Analog(PSAB_PAD_DOWN), DEC);
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(FORWARD);
motor2.run(BACKWARD);
}
vibrate = ps2x.Analog(PSAB_BLUE); //this will set the large motor vibrate
speed based on //how hard you press the blue (X) button
if (ps2x.NewButtonState()) //will be TRUE if any button changes state (on to
off, or off to on)
{
if(ps2x.Button(PSB_L3))
Serial.println("L3 pressed");
if(ps2x.Button(PSB_R3))
Serial.println("R3 pressed");
if(ps2x.Button(PSB_L2))
Serial.println("L2 pressed");
if(ps2x.Button(PSB_R2))
Serial.println("R2 pressed");
if(ps2x.Button(PSB_GREEN))
Serial.println("Triangle pressed");
}
if(ps2x.ButtonPressed(PSB_RED)) //will be TRUE if button was JUST pressed
Serial.println("Circle just pressed");
39
4.4 Analisa
Robot beroda berbasis Arduino dengan Sistem Kendali Joystik Ps2 Wireless
ini bekerja menggunakan modul joystick PS2 yang dikendalikan secara manual.
Operator akan menekan tombol-tombol pada joystick dan akan diterjemahkan oleh
mikrokontroler arduino. Untuk mengawali komunikasi dengan joystick PS2 yaitu
pada byte 1 Arduino mengirimkan data bit 0x01 sebagai start up selanjutnya pada
byte 2 arduino mengirimkan data bit 0x42 dan secara bersamaan joystick PS2
mengirimkan bit 0x41, pada byte kedua ini joystick mengirimkan nomor ID dan tipe
joystick. Kemudian pada byte 3 joystick mengirimkan bit 0x5A yang bearti Arduino
siap menerima perintah dari joystick berupa bit-bit yang berbeda yang
mengindikasikan tombol-tombol joystick mana yang ditekan. Selanjutnya Arduino
akan membaca data perintah tersebut dan memberikan sinyal ke output motor DC
berdasarkan tombol perintah joystick mana yang akan dikirimkan.
Arduino melakukan inisialisasi komunikasi joystick dengan saling
mengirimkan bit-bit data melalui komunikasi Serial Pheriperal Interface (SPI) yaitu
pada pin MISO, MOSI,SCK,dan SS. Pada pin MISO (Master Input Slave Output)
yang berfungsi sebagai jalur data dari master dan masuk kedalam slave, pin MOSI
(Master Output Slave Input) yang berfungsi sebagai jalur data keluar dari slave dan
masuk kedalam master, pin SCK (Serial Clock) berfungsi sebgaai clock dan
SS(Select Slave) berfungsi mengaktifkan slave. Dalam hal ini Arduino berfungsi
sebagai Master yaitu pengatur jalannya komunikasi data da joystick PS2 sebagai
Slave yaitu perangkat yang diajak berkomunikasi.
Penggunaan motor DC diaplikasikan sebagai penggerak roda robot , agar
dapat maju , mundur , belok ke kanan dan ke kiri sesuai yang diperintahkan oleh
operator dengan menekan tombol joystick yang diinginkan. Pada program terdapat
“ps2x.read_gamepad();” yang merupakan program intinya , program tersebut berarti
bahwa PS2 membaca kontroler.
41