Taufik Adi Sanjaya Website penulis : http://www.embeddedsystem.itstoshare.com Kendali nyala led via komunikasi serial dengan Delphi Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com. Website http://www.embeddedsystem.itstoshare.com Kendali nyala led via komunikasi serial dengan Delphi Pada prinsip nya, tulisan ini akan membahas bagaimana cara menyalakan dan memadamkan nyala LED (light emiting dioda) melalui komunikasi serial dengan antarmuka aplikasi pada computer yang dibuat dengan menggunakan Delphi 7. untuk dapat menyalakan dan memadamkan LED yang terkoneksi dengan pin pin mikrokontroller maka harus disepakati dulu protocol komunikasi antara sisi computer dengan sisi mikrokontroller Lebih jelas nya adalah sebagai berikut : Jika computer mengirim data serial berupa string ON1+ char(13) dan mikrokontroller menerima karakter tersebut (baca: ON1+ char(13)) maka LED 1 akan di nyalakan, selanjutnya mikrokontroller akan mengirim notifikasi kepada computer berupa string ON1-OK lalu kemudia karakter ini akan di oleh oleh computer untuk menampilkan keterangan LED1 nyala Sedangkan Jika computer mengirim data serial berupa string OFF1+ char(13) dan mikrokontroller menerima karakter tersebut (baca: OFF1+ char(13)) maka LED 1 akan di padamkan, selanjutnya mikrokontroller akan mengirim notifikasi kepada computer berupa string OFF1-OK lalu kemudia karakter ini akan di oleh oleh computer untuk menampilkan keterangan LED1 padam Tinggal nantinya di pin mikrokontroller manakah LED di hubungkan pada mikrokontroller, 1
Dalam hal ini PCB yang di sediakan, di desain bahwa LED dipasang pada PINB.0 sampai dengan PIN B.3, dengan konfigurasi active high yakni jika pin pada mikrokontroller berlogika high (1), maka LED yang terhubung ke Pin mikrokontroller yang dimaksud akan aktif. Selanjutnya berikut ini adalah tabel yang dibuat untuk merencanakan protocol komunikasi yang dapat di mengerti oleh computer dan mirkokontroler untuk saling bercakap-cakap. no Perintah Dari Balasan dari Aksi Aksi pada computer Mikrokontroler mikrokontroler computer (dikahiri tanda enter) saat ada perintah dari komputer 1 ON1 ON1-OK Menyalakan LED di pin C.4 LED1 nyala 2 OFF1 OFF1-OK Memadamkan LED di pin C.4 LED1 padam 3 ON2 ON2-OK Menyalakan LED di pin C.5 LED2 nyala 4 OFF2 OFF2-OK Memadamkan LED di pin C.5 LED2 padam 5 ON3 ON3-OK Menyalakan LED di pin C.6 LED3 nyala 6 OFF3 OFF3-OK Memadamkan LED di pin C.6 LED3 padam 7 ON4 ON4-OK Menyalakan LED di pin C.7 LED4 nyala 8 OFF4 OFF4-OK Memadamkan LED di pin C.7 9 ON-ALL ON-ALL-OK Menyalakan LED di pin C4-7 10 OFFALL OFF-ALL-OK Memadamkan LED di pin C4-7 LED4 padam SEMUA LED nyala SEMUA LED padam Dari tabel tersebut di atas, pertama kita buat source code pada software bascom yang akan di download kan ke mikrokontroller Source code nya adalah sebagai berikut : $regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 Config Lcdpin = Pin, Db4 = Porta.4, Db5 = Porta.5, Db6 = Porta.6, Db7 = Porta.7, E = PortA.2, Rs = Porta.0 Config Lcd = 16 * 2 2
Cursor Off Config Portc.0 = input Config Portc.1 = input Config Portc.2 = input Config Portc.3 = input Config Portc.4 = output Config Portc.5 = output Config Portc.6 = output Config Portc.7 = output Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 0 Portc.5 = 0 Portc.6 = 0 Portc.7 = 0 wait 1 lcd "KONTROL LED" locate 2, 1 lcd "SERIAL" Dim Perintah As String * 6 Print "Ok!"; Do Input Perintah Select Case Perintah Case "ON1" : Portc.4 = 1 print "ON1-OK" ; Case "ON2" : Portc.5 = 1 3
print "ON2-OK" ; Case "ON3" : Portc.6 = 1 print "ON3-OK" ; Case "ON4" : Portc.7 = 1 print "ON4-OK"; Case "ON-ALL" : Portc = &B11111111 print "ON-ALL-OK"; Case "OFF1" : Portc.4 = 0 print "OFF1OK" ; Case "OFF2" : Portc.5 = 0 print "OFF2OK"; Case "OFF3" : Portc.6 = 0 print "OFF3OK"; Case "OFF4" : Portc.7 = 0 print "OFF4-OK"; Case "OFFALL" : Portc = &B00000000 print "OFF-ALL-OK"; End Select Loop EndSimpan source code diatas dengna nama semisal kontrol serial led.bas, selanjutnya pada lembar kerja Bascom AVR silakan tekan tombol keyboard F7 atau dapat juga dengan menggunakan menu program compile. Proses compile ini akan 4
menghasilkan file dengan nama kontrol serial led.hex, kontrol serial led.bin dan lain lain yang nantinya file dengan ekstensi hex inilah yang akan di downloadkan ke chip mikrokontroller. (video cara download file dengan extensi hex dari computer ke dalam mikrokontroler dapat dilhat pada folder video.) Selanjutnya kita buat source code pada Delphi untuk mengirim data serial ke mikrokontroler dan menerima data yang dikirim dari mikrokontroller ke computer yang nanti nya akan ditampilkan sebagai status kondisi nyala-padamnya LED pada display computer. Komponen nya adalah sebagai berikut : no Nama komponen Properties value 1 Groupbox1 Caption Relay Tester 2 Button1 Caption ON1 3 Button2 Caption ON2 4 Button3 Caption ON3 5 Button4 Caption ON4 6 Button5 Caption ON SEMUA 7 Shape1 Shape stcircle 8 Shape2 Shape stcircle 9 Shape3 Shape stcircle 10 Shape4 Shape stcircle 11 Shape5 Shape stcircle 12 Groupbox2 Caption Keterangan 13 Label1 Caption Keterangan Kondisi Lampu 14 Memo1 - - 15 Button Caption Open Name 16 Button Caption Close Name Buttonopen ButtonClose 17 Button Caption Setting Name Buttonset Selanjutnya untuk tampilan desain aplikasi nya adalah sebagai berikut : 5
Source code untuk masing masing komponen dapat dilihat pada tabel sebagai berikut: no Nama event Source komponen 1 Form On create shape1.brush.color:=clblack; shape2.brush.color:=clblack; shape3.brush.color:=clblack; shape4.brush.color:=clblack; shape5.brush.color:=clblack; 2 Button1 onclick if button1.caption='on1' then comport1.writestr('on'+#13); shape1.brush.color:=clred; button1.caption:='off1' end else if button1.caption='off1'then comport1.writestr('off'+#13); shape1.brush.color:=clblack; button1.caption:='on1' 6
3 Button2 onclick if button2.caption='on2' then comport1.writestr('on2'+#13); shape2.brush.color:=clred; button2.caption:='off2' end else if button2.caption='off2'then comport1.writestr('off2'+#13); shape2.brush.color:=clblack; button2.caption:='on2' 4 Button3 onclick if button3.caption='on3' then comport1.writestr('on3'+#13); shape3.brush.color:=clred; button3.caption:='off3' end else if button3.caption='off3'then comport1.writestr('off3'+#13); shape3.brush.color:=clblack; button3.caption:='on3' 5 Button4 onclick if button4.caption='on4' then comport1.writestr('on4'+#13); shape4.brush.color:=clred; button4.caption:='off4' end else if button4.caption='off4'then comport1.writestr('off4'+#13); shape4.brush.color:=clblack; button4.caption:='on4' 6 Button5 onclick if button5.caption='on SEMUA' then 7
comport1.writestr('on-all'+#13); shape5.brush.color:=clred; button5.caption:='off SEMUA' end else if button5.caption='off SEMUA'then comport1.writestr('offall'+#13); shape5.brush.color:=clblack; button5.caption:='on SEMUA' Buttonset onclick comport1.showsetupdialog; Buttonclose onclick Begin Application.Terminate; End; Buttonopen onclick if Comport1.Connected then // jika smalll port(untuk koneksi dengan port paralel ) sudah terbuka, Comport1.Connected :=false; //maka tutup koneksi dengan port paralel ButtonOpen.Caption:='Open Driver' //maka caption tombol menjadi Open Driver end else Comport1.Connected :=true; // selain itu, buka smallport (terkoneksi dengan port paralel) if Comport1.Connected then ButtonOpen.Caption:='Close Driver'; // jika small port terbuka (terkoneksi dengan port serial) maka tombol akan bertuliskan Close Driver Memo1 onchange var on1,on2,on3,on4,onsemua,off1,off2,off3,off4,offs emua:integer; datamasuk:string; datamasuk:=memo1.lines[memo1.lines.count- 1]; on1:=pos ('ON1-OK',datamasuk); on2:=pos ('ON2-OK',datamasuk); on3:=pos ('ON3-OK',datamasuk); on4:=pos ('ON4-OK',datamasuk); onsemua:=pos ('ON-ALL-OK',datamasuk); 8
off1:=pos ('OFF1-OK',datamasuk); off2:=pos ('OFF2-OK',datamasuk); off3:=pos ('OFF3-OK',datamasuk); off4:=pos ('OFF4-OK',datamasuk); offsemua:=pos ('OFF-ALL-OK',datamasuk); if on1 <> 0 then label1.caption:= 'LED1 nyala'; if on2<> 0 then label1.caption:= 'LED2 nyala'; if on3<> 0 then label1.caption:= 'LED3 nyala'; if on4<> 0 then label1.caption:= 'LED4 nyala'; if onsemua<> 0 then label1.caption:= 'SEMUA LED nyala'; shape1.brush.color:=clred; shape2.brush.color:=clred; shape3.brush.color:=clred; shape4.brush.color:=clred; if off1 <> 0 then label1.caption:= 'LED1 padam'; if off2<> 0 then label1.caption:= 'LED2 padam'; if off3<> 0 then label1.caption:= 'LED3 padam'; 9
if off4<> 0 then label1.caption:= 'LED4 padam'; if offsemua<> 0 then label1.caption:= 'SEMUA LED padam'; shape1.brush.color:=clblack; shape2.brush.color:=clblack; shape3.brush.color:=clblack; shape4.brush.color:=clblack; Comport1 onrxchar var Str, datamasuk: String; comport1.readstr(str,count); memo1.text:=memo1.text+str; datamasuk:=memo1.lines[memo1.lines.count- 1]; form1.caption:=datamasuk; Keterangan fungsi pos pada bagian memo text adalah sebagai berikut: Fungsi pos adalah untuk mencari kata tertentu yang sesuai dengan kata kuncil yang telah di set, jika ada maka dia bernilai 1 (bukan 0) Dalam contoh tersebut, kita ambil on1:=pos ('ON1-OK',datamasuk); berarti jika ada karakter ON1-OK pada memo1 baris terakhir, maka nilai on 1 adalah 1 (bukan 0), setelah itu aka nada tugas lain yang di lakukan yakni menampilkan tulisan led 1 nyala pada komponen label1 Sebagai mana source code sebagai berikut : if on1 <> 0 then label1.caption:= 'LED1 nyala'; Eksekusi program, seharusnya aplikasi menjadi sebagai berikut : 10
Pertama kali klik setting port, pilih com number, baud rate dll Kemudian klik open port, baru dapat dipergunakan untuk pengontrolan 11
Penutup Semoga bermanfaat dan Selamat Berkarya. Silakan baca tulisan saya di IlmuKomputer.com sebagai berikut: 1. Akses SMS dengan Delphi 7: Kirim dan terima SMS di Hand Phone Nokia dengan Mudah menggunakan komponen Oxygen SMS pada Delphi7.0 2. Akses SMS dengan Delphi 7: Membuat SMS Broadcaster dengan Delphi 7.0 menggunakan komponen oxygen SMS 3. Mengakses database Access dengan Delphi 7.0 4. Membuat report pada Delphi 7.0 menggunakan komponen Rave Report 5. Mengakses port parallel PC dengan Delphi 7.0 menggunakan komponen Small Port 6. Cara Instalasi komponen Oxygen SMS pada Delphi 7.0 7. Cara Instalasi komponen Small Port pada Delphi 7.0 8. Instalisasi Sui Pack Pada Delphi 7.0 9. Mempercantik tampilan Program yag dibuat dengan Delphi 7.0 menggunakan Komponen Suipack 10. Membuat Web sederhana dengan Joomla 11. Membuat Dialog Killer dengan Delphi 7 12. Memproteksi file PDF (PDF SECURE) 13. Memproteksi file PDF dengan password 14. Program untuk Capture Foto dengan Webcam menggunakan Delphi 7.0 15. Menggunakan grafik / chart pada Borland Delphi 7 12
16. Menghapus karakter / huruf tertentu dalam teks pada komponen edit atau label di Delphi 17. Menghapus SPASI dalam teks pada komponen edit atau label di Delphi 18. Contoh aplikasi komunikasi serial delphi 19. Virtual serial port, Solusi simulasi komunikasi serial computer dalam satu computer Dan masih banyak lagi Referensi Biografi Penulis Taufik Adi Sanjaya. Numpang lahir di Garut, Jawa Barat. Dibesarkan di Kulon Progo. Saat ini tinggal di Bantul, Daerah Istimewa Yogyakarta. Konsentrasi Study yang diambil adalah Kendali Industri. Di Universitas Negeri Yogyakarta. Pemrograman Delphi (khususnya Akses Port Paralel PC, port serial, pemrograman mikrokontroller keluarga AVR dengan Bascom AVR. Website http://www.embeddedsystem.itstoshare.com Blog Resmi Penulis http://taufikadisanjaya.blogspot.com/ Email : taufiksanjaya@yahoo.com Hp : 085743320570 13