Berikut adalah program bascom AVR untuk percobaan joystick yang baru saja saya selesaikan, merupakan tugas kuliah praktek antar muka mikroprosesor, berikut programnya :
'----------------------------------------------------------
'Nama File : JoystickPS2.Bas
'Ditulis oleh : Dori Saka Pradito
'
'Support : - Sony PSX Handcontroller
' - Hardware SPI Function in BASCOM
' - External crystal 11.0592 MHz
'
'PS2 pinout dapat dilihat dibawah ini :
' _____________________
'Pin 1 ->| o o o | o o o | o o o |
' \___________________/
'
'Untuk ATMEGA 8535
'Keterangan :
'Pin 1 = Data (PSX PAD data line output) - PORTB.1
'Pin 2 = Command (PSX PAD data line input - PORTB.5
'Pin 3 = N/C no connection
'Pin 4 = GND obvious
'Pin 5 = VCC +5VDC obvious
'Pin 6 = ATT (Select) - PORTB.2
'Pin 7 = Clock Line (SCK) - PORTB.7
'Pin 8 = N/C no connection
'Pin 9 = ACK no connection
'
'----------------------------------------------------------
$regfile = "m8535.dat"
$crystal = 11059200
$baud = 9600
'----------------------------------------------------------
'Simbol-simbol pada controller
Deflcdchar 0 , 4 , 4 , 10 , 10 , 27 , 17 , 17 , 31 'Segitiga
Deflcdchar 1 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 31 ' Kotak
Deflcdchar 2 , 4 , 14 , 21 , 4 , 4 , 4 , 4 , 4 ' Up
Deflcdchar 3 , 4 , 4 , 4 , 4 , 4 , 21 , 14 , 4 ' Down
Deflcdchar 4 , 32 , 32 , 4 , 2 , 31 , 2 , 4 , 32 ' Right
Deflcdchar 5 , 32 , 32 , 4 , 8 , 31 , 8 , 4 , 32 ' Left
'----------------------------------------------------------
'LCD 16x2
'Menggunakan PORTC
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4
Config Lcdpin = Pin , Db7 = Portc.5 , Rs = Portc.0 , E = Portc.1
Cursor Noblink Off : Cls
'----------------------------------------------------------
'SPI
Config Spi = Hard , Interrupt = Off , Data Order = Lsb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 128
Spiinit
Config Portb.1 = Output
Pad_att_line Alias Portb.1
Dim Cmdstart As Byte : Cmdstart = &H01
Dim Cmdstatus As Byte : Cmdstatus = &H42
Dim Joy_present As Byte , Joy_mode As Byte
Dim Joy_byte1 As Byte , Joy_byte2 As Byte
Dim Joy_kanan_x As Byte , Joy_kanan_y As Byte
Dim Joy_kiri_x As Byte , Joy_kiri_y As Byte
'----------------------------------------------------------
Key_select Alias Joy_byte1.0
Key_joyr Alias Joy_byte1.1
Key_joy1 Alias Joy_byte1.2
Key_start Alias Joy_byte1.3
Key_up Alias Joy_byte1.4
Key_right Alias Joy_byte1.5
Key_down Alias Joy_byte1.6
Key_left Alias Joy_byte1.7
Key_l2 Alias Joy_byte2.0
Key_r2 Alias Joy_byte2.1
Key_l1 Alias Joy_byte2.2
Key_r1 Alias Joy_byte2.3
Key_triangle Alias Joy_byte2.4
Key_circle Alias Joy_byte2.5
Key_x Alias Joy_byte2.6
Key_square Alias Joy_byte2.7
Config Portd.7 = Output
Config Portd.6 = Output
Config Portd.5 = Output
Config Portd.4 = Output
'----------------------------------------------------------
Cls
Lcd "Tes Joystick PS2"
Lowerline
Lcd "-----SUKSES-----"
Wait 3
Cls
Lcd "--DORI & JIMI-- "
Wait 3
Cls
Do
Reset Pad_att_line : Waitus 100
Spiout Cmdstart , 1
Joy_mode = Spimove(cmdstatus)
Spiin Joy_present , 1
Spiin Joy_byte1 , 1
Spiin Joy_byte2 , 1
Spiin Joy_kanan_x , 1
Spiin Joy_kanan_y , 1
Spiin Joy_kiri_x , 1
Spiin Joy_kiri_y , 1
Set Pad_att_line : Waitus 100
If Joy_byte1.3 = 0 Then
Locate 1 , 1
Lcd "Start "
Print "Start "
Portd.4 = 0
Portd.5 = 1
Portd.6 = 0
Portd.7 = 0
Waitus 500
Elseif Joy_byte1.0 = 0 Then
Locate 1 , 1
Lcd "Select "
Print "Select "
Portd.4 = 0
Portd.5 = 1
Portd.6 = 0
Portd.7 = 0
Waitus 500
Elseif Joy_byte1.1 = 0 Then
Locate 1 , 1
Lcd "Joystick kanan "
Locate 2 , 1
Lcd "X = " ; Joy_kanan_x ; "Y = " ; Joy_kanan_y
Print "Joystick kanan "
Elseif Joy_byte1.2 = 0 Then
Locate 1 , 1
Lcd "Joystick kiri "
Locate 2 , 1
Lcd "X = " ; Joy_kiri_x ; "Y = " ; Joy_kiri_y
Print "Joystick kiri "
Elseif Joy_byte1.4 = 0 Then
Locate 1 , 1
Lcd Chr(2) ; " Panah keatas "
Print "Panah keatas "
Portd.4 = 0
Portd.5 = 1
Portd.6 = 0
Portd.7 = 0
Waitus 500
Elseif Key_down = 0 Then
Locate 1 , 1
Lcd Chr(3) ; " Panah kebawah "
Print "Panah kebawah "
Portd.4 = 0
Portd.5 = 1
Portd.6 = 0
Portd.7 = 0
Waitus 500
Elseif Key_right = 0 Then
Locate 1 , 1
Lcd Chr(4) ; " Panah kekanan"
Print "Panah kekanan "
Portd.4 = 0
Portd.5 = 1
Portd.6 = 0
Portd.7 = 0
Waitus 500
Elseif Key_left = 0 Then
Locate 1 , 1
Lcd Chr(5) ; " Panah kekiri "
Print "Panah kekiri "
Portd.4 = 0
Portd.5 = 1
Portd.6 = 0
Portd.7 = 0
Waitus 500
Elseif Key_triangle = 0 Then
Locate 1 , 1
Lcd Chr(0) ; " Segitiga "
Print "Segitiga "
Portd.4 = 0
Portd.5 = 0
Portd.6 = 0
Portd.7 = 1
Waitus 500
Elseif Key_x = 0 Then
Locate 1 , 1
Lcd "Tombol X "
Print "Tombol X "
Portd.4 = 0
Portd.5 = 0
Portd.6 = 0
Portd.7 = 1
Waitus 500
Elseif Key_square = 0 Then
Locate 1 , 1
Lcd Chr(1) ; " Kotak "
Print "Kotak "
Portd.4 = 0
Portd.5 = 0
Portd.6 = 0
Portd.7 = 1
Waitus 500
Elseif Key_circle = 0 Then
Locate 1 , 1
Lcd "O Lingkaran "
Print "Lingkaran "
Portd.4 = 0
Portd.5 = 0
Portd.6 = 0
Portd.7 = 1
Waitus 500
Elseif Key_l1 = 0 Then
Locate 1 , 1
Lcd "L1 "
Print "L1 "
Portd.4 = 0
Portd.5 = 0
Portd.6 = 1
Portd.7 = 0
Waitus 500
Elseif Key_l2 = 0 Then
Locate 1 , 1
Lcd "L2 "
Print "L2 "
Portd.4 = 0
Portd.5 = 0
Portd.6 = 1
Portd.7 = 0
Waitus 500
Elseif Key_r1 = 0 Then
Locate 1 , 1
Lcd "R1 "
Print "R1 "
Portd.4 = 0
Portd.5 = 0
Portd.6 = 1
Portd.7 = 0
Waitus 500
Elseif Key_r2 = 0 Then
Locate 1 , 1
Lcd "R2 "
Print "R2 "
Portd.4 = 0
Portd.5 = 0
Portd.6 = 1
Portd.7 = 0
Elseif Pad_att_line = 1 Then
Locate 1 , 1
Lcd "Tidak ada respon"
Print "Tidak ada respon"
Portd.4 = 1
Portd.5 = 0
Portd.6 = 0
Portd.7 = 0
End If
Waitus 100
Loop
'----------------------------------------------------------
Pada program diatas sudah bisa terhubung dengan komputer, dengan menggunakan rangkaian serial MAX232, bisa ditampilkan dengan hyperterminal ataupun menggunakan aplikasi Visual Basic 6.0 pada komputer.
Untuk pengembangan, jika ada yang bisa membantu untuk menambahkan program pembacaan nilai X dan Y pada joystick mohon beri komentar, karena pada program diatas belum saya masukkan untuk keadaan Red Mode.
Pages
Wednesday, December 3, 2014
Friday, November 28, 2014
Rangkaian Driver Relay 5VDC
Pada rangkaian yang saya buat ini, diperlukan beberapa komponen sebagai berikut :
1. Relay 5VDC (bisa diganti sesuai kebutuhan/ yang relevan)
2. Resistor 100 ohm
3. Transistor 2N222 (NPN - bisa diganti sesuai kebutuhan)
4. Dioda
5. Terminal Screw 3 Pin
Rangkaian ini hanya untuk satu driver relay, untuk penggunaan yang lebih banyak dapat dikombinasikan lagi. Berikut gambar rangkaian skematiknya :
Untuk rangkaian pada PCB dapat dilihat pada gambar dibawah ini :
Tata letak komponennya sebagai berikut :
Rangkaian ini bisa diaplikasikan pada rangkaian pengendali lampu rumah, pengendai motor DC maupun AC, dan lain sebagainya. Pada gambar diatas dapat kita lihat terdapat 6 buah pin (3 buah pin disisi kiri dan kanan), pada 3 buah pin disisi kiri terdiri dari pin : VCC, Kendali dari mikro, dan GND, kemudian pada 3 buah pin disisi kanan merupakan pin untuk perangkat yang ingin dikendalikan, NC merupakan singkatan dari normally close, artinya pin tersebut daam kondisi normal tertutup saat inputan tidak diberikan pada pin masukan relay, sedangkan NO merupakan singkatan dari normally open, artinya pin tersebut normal terbuka saat inputan tidak diberikan pada pin masukan relay, kemudian pada pin tengah (sisi kanan) merupakan sumber tegangan (AC atau DC) dari perangkat yang ingin dikendaikan. Semoga bisa menambah wawasan dan mohon koreksinya jika terdapat kesalahan.
Saturday, November 22, 2014
Masalah 'Airwires Hidden' di EAGLE
Baru-baru ini saya mendapat masalah saat sedang mendesain rangkaian di EAGLE, tanpa saya sadari kalau sedang mengklik sesuatu saat menu properties wire terbuka, dan ternyata yang saya klik adalah menu pilihan "Airwires hidden", kala itu menu properties yang terbuka adalah ground wire, akibatnya adalah sambungan ke seluruh ground menghilang!
Terihat unrouted wire untuk ground menjadi hilang (lingkaran hitam).
Pusing bukan kepalang gara-gara ini, saya utak-atik nih aplikasi, mencari tahu bagaimana memunculkan kembali wire yang sudah menghilang, mulai dari Display Toolbar sampai menu HELP! akhirnya saya mulai bertanya sama mbah google, ketemu juga deh sama forum yang bahas masalah ini (thanks chrisphoenix) beliau ngomong gini "Hides airwires selected via the GROUP command during routing. Simply select the airwires to hide with the group command and run this ULP. Use 'RATS *' at the command prompt to show all airwires." lalu saya ikuti saran beliau dengan ketik RATS * pada command prompt di eagle. Ahasil muncul wire yang tadinya menghilang!
Semoga bisa membantu.
Sunday, July 20, 2014
Mengontrol Lampu Menggunakan Remote Universal
Halo semuanya, udah lama ga posting, karena kesibukan kuliah. Kali ini saya ingin memperlihatkan video rangkaian percobaan mengontrol lampu menggunakan remote universal yang berhasil saya buat. enjoy the video!
Subscribe to:
Posts (Atom)