Home » » JustBASIC : Mengontrol Starduino/Arduino + Modul Dua Relay

JustBASIC : Mengontrol Starduino/Arduino + Modul Dua Relay



Aplikasi ini saya buat menggunakan interpreter bahasa BASIC freeware asal USA, yakni JustBASIC. JustBASIC sangat mudah dipelajari dan digunakan. :D

Starduino dan Arduino berkomunikasi dengan PC melalui port serial atau port USB dengan bantuan konverter USB-to-RS232, oleh karenanya pada aplikasi kita sediakan pilihan port serial mulai dari COM1 hingga COM50 menggunakan komponen Windows ComboBox.

Pada JustBASIC, komponen ComboBox dapat diciptakan/dibuat menggunakan perintah:

ComboBox #dlg.cbPortSerial, portlist$(), [cbPortSerialChanged], 120, 36, 70, 25

#dlg adalah variabel handle dari window aplikasi, sedangkan cbPortSerial adalah nama dari komponen ComboBox yang kita ciptakan.

portlist$() adalah variabel array yang berisi string pilihan dalam ComboBox. Variabel portlist$ diisi dengan pilihan “COM1” sampai dengan “COM50” dengan perintah sebagai berikut:

dim portlist$(50) 
for i=1 to 50 
portlist$(i) = "COM"+str$(i) 
next

Ket: Baris-baris perintah di atas diletakkan sebelum pendeklarasian ComboBox!

[cbPortSerialChanged] adalah label program yang akan dituju oleh program utama ketika terjadi event pada komponen ComboBoxcbPortSerial. Sedangkan 160, 36 adalah koordinat posisi ComboBox pada form aplikasi dan 72, 25 adalah property Width dan Height dari komponen ComboBox.

Adapun komponen-komponen lain yang digunakan adalah StaticText, Button, dan GraphicBox.

StaticText adalah Label kalau pada pemrograman Delphi, Buttonadalah Command Button, dan GraphicBox adalah komponen spesial untuk menggambar grafik.

Keempat komponen Button dalam sebuah GroupBox dideklarasikan dengan perintah sebagai berikut:

groupbox #dlg.group2, "Kontrol:", 20, 85, 195, 100 
button #dlg.Relay1On, "RL1 ON", [Relay1On], UL, 35, 105, 80, 28 
button #dlg.Relay1Off, "RL1 OFF", [Relay1Off], UL, 120, 105, 80, 28 
button #dlg.Relay2On, "RL2 ON", [Relay2On], UL, 35, 145, 80, 28 
button #dlg.Relay2Off, "RL2 OFF", [Relay2Off], UL, 120, 145, 80, 28


[Relay1On] adalah label program yang akan dieksekusi ketika Button Relay1On di-klik oleh user. Demikian juga halnya dengan [Relay1Off], [Relay2On], dan [Relay2Off] untuk masing-masing button yang dimaksud.

Komponen GraphicBox adalah komponen spesial dengan metode pemanipulasian grafik yang spesifik sehingga mudah digunakan. Jika Anda pernah membuat program GDI, maka sebenarnya tidak jauh berbeda, hanya saja JustBASIC menyediakan fungsi-fungsi yang lebih mudah untuk digunakan.

Pada contoh aplikasi pengontrolan 2 buah relay ini, program akan merepresentasikan kondisi relay dengan sebuah rectangle berwarna merah tua dengan border putih tebal jika relay dalam keadaan OFF, dan sebuah rectangle berwarna merah dengan border yang samajika relay dalam keadaan ON.

Program untuk menggambar rectangle untuk masing-masing relay adalah sebagai berikut:

[DrawRelay]
print #dlg.gbox, "home"
print #dlg.gbox, "down"
print #dlg.gbox, "fill black"
print #dlg.gbox, "size 3"
print #dlg.gbox, "color 255 255 255"
print #dlg.gbox, Relay1BackColor$
print #dlg.gbox, "place 15 15"
print #dlg.gbox, "boxfilled 125 70"
print #dlg.gbox, "place 30 46"
print #dlg.gbox, "color 255 255 100"
print #dlg.gbox, Relay1$
print #dlg.gbox, "color 255 255 255"
print #dlg.gbox, Relay2BackColor$
print #dlg.gbox, "place 15 145"
print #dlg.gbox, "boxfilled 125 90"
print #dlg.gbox, "place 30 122"
print #dlg.gbox, "color 255 255 100"
print #dlg.gbox, Relay2$
print #dlg.gbox, "flush"
return

Sangat mudah. Dan listing program selengkapnya adalah sebagai berikut:

‘– jb_starduino_drv02.bas
‘– Kontrol 2 Buah Relay (DRV02) pada Pin 8 dan Pin 9
‘– Chandra MDE – http://arduinoach.blogspot.co.id
‘– 02/06/2013

nomainwin

WindowWidth = 400
WindowHeight = 280

UpperLeftX = int((DisplayWidth- WindowWidth)/2)
UpperLeftY = int((DisplayHeight- WindowHeight)/2)

dim portlist$(50)
for i=1 to 50
portlist$(i) = "COM"+str$(i)
next

portserial$ = portlist$(1)

Relay1$ = "\RELAY-1 OFF"
Relay2$ = "\RELAY-2 OFF"

RelayOnColor$ = "backcolor 255 0 0"
RelayOffColor$ = "backcolor 100 0 0"

Relay1BackColor$ = RelayOffColor$
Relay2BackColor$ = RelayOffColor$

groupbox #dlg.group1, "Port Serial:", 20, 15, 195, 58
statictext #dlg.label1, "Nomor Port:", 35, 40, 85, 20
ComboBox #dlg.cbPortSerial, portlist$(), [cbPortSerialChanged], 120, 36, 70, 25

groupbox #dlg.group2, "Kontrol:", 20, 85, 195, 100
button #dlg.Relay1On, "RL1 ON", [Relay1On], UL, 35, 105, 80, 28
button #dlg.Relay1Off, "RL1 OFF", [Relay1Off], UL, 120, 105, 80, 28
button #dlg.Relay2On, "RL2 ON", [Relay2On], UL, 35, 145, 80, 28
button #dlg.Relay2Off, "RL2 OFF", [Relay2Off], UL, 120, 145, 80, 28

graphicbox #dlg.gbox, 230, 20, 145, 165

statictext #dlg.about1, "By Arduino Ach ", 20, 210, 220, 15
statictext #dlg.about2, "http://arduinoach.blogspot.co.id", 20, 225, 200, 20
statictext #dlg.about3, "[JustBASIC 1.01]", 248, 220, 150, 20

open "TELINKS – STARDUINO + Modul 2-Relay DRV02" for dialog as #dlg
print #dlg, "font Tahoma 9 bold"
print #dlg.about1, "!font Tahoma 8 bold"
print #dlg.about2, "!font Tahoma 8 bold"
print #dlg.about3, "!font Tahoma 11 bold"
print #dlg.gbox, "font Arial 10 bold"
print #dlg.cbPortSerial, "selectindex 1"

gosub [DrawRelay]

[mainLoop]
wait

[DrawRelay]
print #dlg.gbox, "home"
print #dlg.gbox, "down"
print #dlg.gbox, "fill black"
print #dlg.gbox, "size 3"
print #dlg.gbox, "color 255 255 255"
print #dlg.gbox, Relay1BackColor$
print #dlg.gbox, "place 15 15"
print #dlg.gbox, "boxfilled 125 70"
print #dlg.gbox, "place 30 46"
print #dlg.gbox, "color 255 255 100"
print #dlg.gbox, Relay1$
print #dlg.gbox, "color 255 255 255"
print #dlg.gbox, Relay2BackColor$
print #dlg.gbox, "place 15 145"
print #dlg.gbox, "boxfilled 125 90"
print #dlg.gbox, "place 30 122"
print #dlg.gbox, "color 255 255 100"
print #dlg.gbox, Relay2$
print #dlg.gbox, "flush"
return

[Relay1On]
Com = 16384
oncomerror [PortSerialError]
open portserial$ + ":9600,n,8,1,ds0,cs0,rs" for random as #hCom
print #hCom, "111"
close #hCom
Relay1$ = "\RELAY-1 ON"
Relay1BackColor$ = RelayOnColor$
Gosub [DrawRelay]
wait

[Relay1Off]
Com = 16384
oncomerror [PortSerialError]
open portserial$ + ":9600,n,8,1,ds0,cs0,rs" for random as #hCom
print #hCom, "AAA"
close #hCom
Relay1$ = "\RELAY-1 OFF"
Relay1BackColor$ = RelayOffColor$
Gosub [DrawRelay]
wait

[Relay2On]
Com = 16384
oncomerror [PortSerialError]
open portserial$ + ":9600,n,8,1,ds0,cs0,rs" for random as #hCom
print #hCom, "222"
close #hCom
Relay2$ = "\RELAY-2 ON"
Relay2BackColor$ = RelayOnColor$
Gosub [DrawRelay]
wait

[Relay2Off]
Com = 16384
oncomerror [PortSerialError]
open portserial$ + ":9600,n,8,1,ds0,cs0,rs" for random as #hCom
print #hCom, "BBB"
close #hCom
Relay2$ = "\RELAY-2 OFF"
Relay2BackColor$ = RelayOffColor$
Gosub [DrawRelay]
wait

[cbPortSerialChanged]
#dlg.cbPortSerial "selection? portserialquot;
wait

[PortSerialError]
notice "Error at opening port "; portserial$
wait

Program akan mengirimkan string "111" jika Button RL1 ON di-klik, string "AAA" jika Button RL1 OFF di-klik, string "222" jika ButtonRL2 ON di-klik, dan string "BBB" jika Button RL2 OFF di-klik.

Agar Starduino atau Arduino dapat menerima perintah dari PC dan mengeksekusi perintah dengan benar, maka sketch programnya adalah sebagai berikut:


Upload sketch di atas ke dalam board Starduino atau Arduino dan jalankan aplikasi JustBASIC, maka sekarang kita dapat mengontrol relay DRV02 melalui button-button yang telah disediakan.

Sangat mudah bukan? :D

Selamat mencoba, selamat belajar, dan selamat berkarya!

0 komentar:

Post a Comment

close