JustBASIC – Mengontrol Starduino/Arduino + Modul Dua Relay DRV02


jb_starduino_drv02

Jika pada tulisan sebelumnya saya sampaikan sekilas tentang interpreter JustBASIC dan contoh aplikasi pengontrolan LED pada Pin-13 dari board Starduino atau Arduino, maka pada tulisan ini akan saya sampaikan contoh aplikasi pengontrolan 2 buah relay menggunakan Starduino dan modul relay DRV02.

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

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 ComboBox cbPortSerial. 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, Button adalah 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

ujidrv02_400 [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 sama jika 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://teknikelektrolinks.com
‘– 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 Chandra MDE – Teknik Elektro Links", 20, 210, 220, 15
    statictext  #dlg.about2, "http://teknikelektrolinks.com", 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? portserial$"
    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 Button RL2 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:

image

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?😀

Selamat mencoba, selamat belajar, dan selamat berkarya!

🙂

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s