JustBASIC – Mengontrol Starduino/Arduino + Modul Empat Relay DRV04


jb_starduino_drv04

Gambar di samping adalah screenshot dari program aplikasi pengontrolan empat buah relay melalui komputer dengan perantaraan port serial. Program saya buat menggunakan interpreter gratisan yang senantiasa mempesona saya yakni JustBASIC.

Bagi Anda yang belum mengenal JustBASIC, Anda bisa membaca sekelumit mengenai JustBASIC pada tulisan saya sebelumnya yakni:

JustBASIC – Program Kontrol LED Pin13 Pada Starduino atau Arduino

JustBASIC – Mengontrol Starduino/Arduino + Modul Dua Relay DRV02

Program aplikasi ini akan mengirimkan sebuah string perintah kepada mikrokontroler (STARDUINO) sesuai dengan tombol dan status tombol yang ditekan. Jika tombol berwarna hitam ditekan, maka program akan mengirimkan string perintah untuk mengaktifkan relay yang bersangkutan. Dan jika tombol berwarna merah ditekan, maka program akan mengirimkan string perintah untuk mematikan relay yang bersangkutan.

Tombol berwarna merah menandakan bahwa status relay yang bersangkutan adalah ON dan tombol berwarna hitam menandakan bahwa status relay adalah OFF.

Berikut adalah tabel string perintah yang dikenali oleh STARDUINO:

No String Perintah Fungsi
1 $R11 Mengaktifkan Relay-1
2 $R10 Mematikan Relay-1
3 $R21 Mengaktifkan Relay-2
4 $R20 Mematikan Relay-2
5 $R31 Mengaktifkan Relay-3
6 $R30 Mematikan Relay-3
7 $R41 Mengaktifkan Relay-4
8 $R40 Mematikan Relay-4

Adapun program selengkapnya adalah sebagai berikut:

‘– PC-Starduino+DRV04 – Kontrol 4 Buah Relay (DRV04)
‘– Chandra MDE – http://teknikelektrolinks.com
‘– 19/06/2013

    nomainwin

    RON  = 1
    ROFF = 2

    WindowWidth = 240
    WindowHeight = 280

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

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

    portserial$ = portlist$(1)

    dim RelayFlag(4)
    RelayFlag(1) = ROFF
    RelayFlag(2) = ROFF
    RelayFlag(3) = ROFF
    RelayFlag(4) = ROFF

    dim RelayCommand$(4, 2)
    RelayCommand$(1, RON)  = "$R11"
    RelayCommand$(1, ROFF) = "$R10"
    RelayCommand$(2, RON)  = "$R21"
    RelayCommand$(2, ROFF) = "$R20"
    RelayCommand$(3, RON)  = "$R31"
    RelayCommand$(3, ROFF) = "$R30"
    RelayCommand$(4, RON)  = "$R41"
    RelayCommand$(4, ROFF) = "$R40"

    Relay = 0

    loadbmp "BMP_RelayOn", "bmp\redbttn.bmp"
    loadbmp "BMP_RelayOff", "bmp\blckbttn.bmp"

    dim BMPRelay$(2)
    BMPRelay$(RON)  = "BMP_RelayOn"
    BMPRelay$(ROFF) = "BMP_RelayOff"

    ‘– Rancangan Form/Dialog Aplikasi
    groupbox    #dlg.group1, "Port Serial:", 20, 15, 190, 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, 190, 95
    statictext     #dlg.txtRelay1, "R1      R2      R3      R4", 45, 110, 150, 15
    bmpbutton   #dlg.BtnRelay1, "bmp\blckbttn.bmp", [BtnRelay1Click], UL, 39, 130
    bmpbutton   #dlg.BtnRelay2, "bmp\blckbttn.bmp", [BtnRelay2Click], UL, 81, 130
    bmpbutton   #dlg.BtnRelay3, "bmp\blckbttn.bmp", [BtnRelay3Click], UL, 122, 130
    bmpbutton   #dlg.BtnRelay4, "bmp\blckbttn.bmp", [BtnRelay4Click], UL, 164, 130

    statictext  #dlg.about1, "By Chandra MDE", 20, 190, 200, 20
    statictext  #dlg.about2, "Created using JustBASIC 1.01", 20, 206, 220, 20
    statictext  #dlg.about3, "http://teknikelektrolinks.com", 20, 223, 200, 20

    open "STARDUINO+DRV04" for dialog_nf as #dlg
    print #dlg, "font Tahoma 9 bold"
    print #dlg.cbPortSerial, "selectindex 1"

    #dlg "trapclose [Quit]"

[mainLoop]
    wait

[BtnRelay1Click]
    Relay = 1
    Gosub [ProsesRelay]
    wait

[BtnRelay2Click]
    Relay = 2
    Gosub [ProsesRelay]
    wait

[BtnRelay3Click]
    Relay = 3
    Gosub [ProsesRelay]
    wait

[BtnRelay4Click]
    Relay = 4
    Gosub [ProsesRelay]
    wait

[cbPortSerialChanged]
    #dlg.cbPortSerial "selection? portserial$"
    wait

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

[Quit]
    close #dlg
    end

[ProsesRelay]
    oncomerror [PortSerialError]
    Com = 16384
    open portserial$ + ":9600,n,8,1,ds0,cs0,rs" for random as #CommHandle
    if RelayFlag(Relay)=ROFF then
        RelayFlag(Relay)=RON
    else
        RelayFlag(Relay)=ROFF
    end if
    print #CommHandle, "" + RelayCommand$(Relay, RelayFlag(Relay))
    select case Relay
        case 1
            print #dlg.BtnRelay1, "bitmap "; BMPRelay$(RelayFlag(Relay))
        case 2
            print #dlg.BtnRelay2, "bitmap "; BMPRelay$(RelayFlag(Relay))
        case 3
            print #dlg.BtnRelay3, "bitmap "; BMPRelay$(RelayFlag(Relay))
        case 4
            print #dlg.BtnRelay4, "bitmap "; BMPRelay$(RelayFlag(Relay))
    end select
    close #CommHandle
    return

Sangat mudah, bukan? Itulah JustBASIC, sangat mudah dan tidak bertele-tele! πŸ˜€

Pada awal program kita siapkan variabel-variabel dan juga data-data yang nantinya akan dipakai dalam program. Langkah selanjutnya adalah merancang form aplikasi. Perancangan form aplikasi ini bisa dilakukan secara manual, yakni menggunakan teknik ketik program, running, lihat hasilnya, dan lakukan penyesuaian. Atau bisa juga dilakukan dengan menggunakan FreeForm-J GUI Editor yang tersedia dalam menu Run pada software JustBASIC.

Karena komponennya (widget) tidak banyak, maka saya tidak menggunakan GUI Editor tapi langsung menciptakan komponen-komponen menggunakan baris-baris perintah program dan melakukan running untuk mengetahui hasilnya, dan kemudian melakukan penyesuaian ukuran dan lokasi sampai saya dapatkan hasil yang saya inginkan.

Setelah rancangan form aplikasi selesai, kita tinggal menambahkan rutin-rutin event-handler untuk masing-masing komponen yang kita rancang. Pada program di atas, komponen-komponen yang perlu kita handle event-nya adalah komponen button R1-R4 dan combobox Nomor Port.

Jika tombol R1-R4 ditekan, maka program akan menjalankan rutin ProsesRelay. Rutin ini akan mengirimkan string perintah sesuai dengan nomor relay dan status relay. String perintah disimpan dalam variabel array RelayCommand$(), nomor relay disimpan pada variabel Relay, dan status relay disimpan dalam variabel array RelayFlag().

Jika user memilih/mengganti nomor port pada combobox, maka program akan meng-update variabel PortSerial$. Program akan menampilkan pesan kesalahan jika gagal membuka port serial yang dipilih.

Berikut adalah foto Starduino dan modul DRV04 yang saya gunakan dalam eksperimen ini.

jb_starduino_drv04

Dan berikut ini adalah listing program sketch Arduino-nya:

//JustBASIC — Starduino+DRV04
//Chandra MDE – http://teknikelektrolinks.com
//20/06/2013

long X = 10000;
boolean n = false;

void setup()
{
  pinMode(8, OUTPUT);  //pin-8 sebagai OUTPUT
  pinMode(9, OUTPUT);  //pin-9 sebagai OUTPUT
  pinMode(10, OUTPUT);  //pin-10 sebagai OUTPUT
  pinMode(11, OUTPUT);  //pin-11 sebagai OUTPUT
  pinMode(13, OUTPUT);  //pin-13 sebagai OUTPUT
  Serial.begin(9600);  //komunikasi serial 9600 baud
}
void loop()
{
  X–;
  if (X==0)
  {
    if (n==false)
      digitalWrite(13, HIGH); //LED ON
    else
      digitalWrite(13, LOW); //LED OFF
    X = 10000;
    n = !n;
  }
  if (Serial.available())
  {
    char ch = Serial.read();
    if (ch==’$’)
    {
      while (!Serial.available());
      ch = Serial.read();
      if (ch==’R’)
      {
        while (!Serial.available());
        ch = Serial.read();
        if (ch==’1′)
        {
          while (!Serial.available());
          ch = Serial.read();
          if (ch==’1′)
            digitalWrite(8, HIGH); //RELAY-1 ON
          else if (ch==’0′)
            digitalWrite(8, LOW);  //RELAY-1 OFF
        }
        else if (ch==’2′)
        {
          while (!Serial.available());
          ch = Serial.read();
          if (ch==’1′)
            digitalWrite(9, HIGH); //RELAY-2 ON
          else if (ch==’0′)
            digitalWrite(9, LOW); //RELAY-2 OFF
        }
        else if (ch==’3′)
        {
          while (!Serial.available());
          ch = Serial.read();
          if (ch==’1′)
            digitalWrite(10, HIGH); //RELAY-3 ON
          else if (ch==’0′)
            digitalWrite(10, LOW); //RELAY-3 OFF
        }
        else if (ch==’4′)
        {
          while (!Serial.available());
          ch = Serial.read();
          if (ch==’1′)
            digitalWrite(11, HIGH); //RELAY-4 ON
          else if (ch==’0′)
            digitalWrite(11, LOW); //RELAY-4 OFF
        }
      }
    }
  }

Nah, semoga tulisan singkat dan terkesan tergesa-gesa dalam penulisannya ini dapat memberikan manfaat bagi kita semua. πŸ˜€

Selamat belajar dan selamat berkarya!

πŸ™‚

Iklan
Perihal

Cek situs kami di http://teknikelektrolinks.com. Blog Raspberry Pi: http://raspi.teknikelektrolinks.com

Tagged with: , , , , , ,
Ditulis dalam Antarmuka Komputer, Driver Relay, Elektronika, Industrial Control and Automation, JustBASIC, Mikrokontroler, Starduino

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

Kategori

Bergabunglah dengan 2.501 pengikut lainnya

Hot Links




Display Counter 3-Digit Dengan Koneksi Wi-Fi
Display Nomor Antrian WiFi Android
Mengontrol Relay Via USB/Serial dan Wi-Fi
USB Relay USB-2REL
USB Relay USB-4REL
Water Level Control WLC-02
Serial Relay SER-4REL
NEO STARDUINO SMS ALARM

Alarm SMS Berbasis NEO STARDUINO

1 PC – 6 Unit USB-2REL

Testing 6 USB-2REL Pada 1 Komputer

Standard Pengujian USB-2REL

Pengujian USB-2REL Sebelum Dikirim

LPT-4REL on Knoppix 7.0.5

Testing LPT-4REL on Knoppix Linux

T101 Inkubator Telur

T101 Inkubator Penetas Telur

KONTROL PERALATAN LISTRIK VIA PORT LPT KOMPUTER

Demo Kontrol Kontaktor via Port LPT

STARDUINO meets ANDROID

Demo Kontrol Bluetooth Relay Android

STARDUINO SMS RELAY

Kontrol Relay Via SMS Dengan Starduino

STARDUINO WEB RELAY

Demo Kontrol Relay Via Web/Internet

JustBASIC USB-2REL Control

Demo Kontrol USB-2REL + JustBASIC

STARDUINO + GPS + LCD

Demo Starduino GPS Dengan LCD

USB-2REL EXTREME TEST

Demo Kontrol On/Off Lampu USB-2REL

THERMOSTAT T101 IN ACTION

Demo Thermostat T101 Pada SV=37.5Β°C

WATER LEVEL CONTROL WLC-02

Demo Kontrol Level Air Tandon WLC-02

HUMIDITY CONTROLLER H103

Demo Kontrol Kelembaban H103 (DHT11)

%d blogger menyukai ini: