( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya)
Taufik Adi Sanjaya Website penulis : http://www.embeddedsystem.itstoshare.com
Kendali nyala led via komunikasi serial dengan Delphi Lisensi Dokumen: Copyright © 2003-2007 IlmuKomputer.Com 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,
Komunitas eLearning IlmuKomputer.Com
1
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya) 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. Aksi pada dari Aksi no Perintah Dari Balasan computer mikrokontroler Mikrokontroler computer saat ada perintah (dikahiri tanda dari komputer enter) 1 ON1 ON1-OK Menyalakan LED Menampilkan LED1 nyala di pin C.4 Menampilkan 2 OFF1 OFF1-OK Memadamkan LED1 padam LED di pin C.4 3 ON2 ON2-OK Menyalakan LED Menampilkan LED2 nyala di pin C.5 Menampilkan 4 OFF2 OFF2-OK Memadamkan LED2 padam LED di pin C.5 5 ON3 ON3-OK Menyalakan LED Menampilkan di pin C.6 LED3 nyala 6 OFF3 OFF3-OK Memadamkan Menampilkan LED di pin C.6 LED3 padam 7 ON4 ON4-OK Menyalakan LED Menampilkan di pin C.7 LED4 nyala 8 OFF4 OFF4-OK Memadamkan Menampilkan LED di pin C.7 LED4 padam 9 ON-ALL ON-ALL-OK Menyalakan LED Menampilkan SEMUA LED di pin C4-7 nyala Menampilkan 10 OFFALL OFF-ALL-OK Memadamkan SEMUA LED LED di pin C4-7 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 cls
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
2
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya) 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 cls locate 1 , 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" ; cls locate 1 , 1 lcd perintah Case "ON2" : Portc.5 = 1 cls locate 1 , 1 lcd perintah Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
3
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya) print "ON2-OK" ; Case "ON3" : Portc.6 = 1 cls print "ON3-OK" ; locate 1 , 1 lcd perintah Case "ON4" : Portc.7 = 1 cls print "ON4-OK"; locate 1 , 1 lcd perintah Case "ON-ALL" : Portc = &B11111111 cls print "ON-ALL-OK"; locate 1 , 1 lcd perintah Case "OFF1" : Portc.4 = 0 cls print "OFF1OK" ; locate 1 , 1 lcd perintah Case "OFF2" : Portc.5 = 0 cls print "OFF2OK"; locate 1 , 1 lcd perintah Case "OFF3" : Portc.6 = 0 cls print "OFF3OK"; locate 1 , 1 lcd perintah Case "OFF4" : Portc.7 = 0 cls print "OFF4-OK"; locate 1 , 1 lcd perintah Case "OFFALL" : Portc = &B00000000 cls print "OFF-ALL-OK"; locate 1 , 1 lcd perintah 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 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
4
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya) 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 6
Button4 Button5
Caption Caption
ON4 ON SEMUA
7
Shape1
Shape
stCircle
8 9 10 11 12 13
Shape2 Shape3 Shape4 Shape5 Groupbox2 Label1
Shape Shape Shape Shape Caption Caption
14 15
Memo1 Button
Caption Name
stCircle stCircle stCircle stCircle Keterangan Keterangan Lampu Open Buttonopen
16
Button
17
Button
Caption Name Caption Name
Close ButtonClose Setting Buttonset
Kondisi
Selanjutnya untuk tampilan desain aplikasi nya adalah sebagai berikut :
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
5
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya)
Source code untuk masing masing komponen dapat dilihat pada tabel sebagai berikut: no Nama event Source komponen 1 Form On create begin shape1.Brush.Color:=clblack; shape2.Brush.Color:=clblack; shape3.Brush.Color:=clblack; shape4.Brush.Color:=clblack; shape5.Brush.Color:=clblack; end; 2 Button1 onclick begin if button1.Caption='ON1' then begin comport1.WriteStr('ON'+#13); shape1.Brush.Color:=clred; button1.Caption:='OFF1' end else if button1.Caption='OFF1'then begin comport1.WriteStr('OFF'+#13); shape1.Brush.Color:=clblack; button1.Caption:='ON1' end; end;
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
6
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya) 3
Button2
onclick
4
Button3
onclick
5
Button4
onclick
6
Button5
onclick
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
begin if button2.Caption='ON2' then begin comport1.WriteStr('ON2'+#13); shape2.Brush.Color:=clred; button2.Caption:='OFF2' end else if button2.Caption='OFF2'then begin comport1.WriteStr('OFF2'+#13); shape2.Brush.Color:=clblack; button2.Caption:='ON2' end; end; begin if button3.Caption='ON3' then begin comport1.WriteStr('ON3'+#13); shape3.Brush.Color:=clred; button3.Caption:='OFF3' end else if button3.Caption='OFF3'then begin comport1.WriteStr('OFF3'+#13); shape3.Brush.Color:=clblack; button3.Caption:='ON3' end; end; begin if button4.Caption='ON4' then begin comport1.WriteStr('ON4'+#13); shape4.Brush.Color:=clred; button4.Caption:='OFF4' end else if button4.Caption='OFF4'then begin comport1.WriteStr('OFF4'+#13); shape4.Brush.Color:=clblack; button4.Caption:='ON4' end; end; begin if button5.Caption='ON SEMUA' then begin
7
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya)
Buttonset
onclick
Buttonclose
onclick
Buttonopen
onclick
Memo1
onchange
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
comport1.WriteStr('ON-ALL'+#13); shape5.Brush.Color:=clred; button5.Caption:='OFF SEMUA' end else if button5.Caption='OFF SEMUA'then begin comport1.WriteStr('OFFALL'+#13); shape5.Brush.Color:=clblack; button5.Caption:='ON SEMUA' end; end; begin comport1.ShowSetupDialog; end; Begin Application.Terminate; End; begin if Comport1.Connected then // jika smalll port(untuk koneksi dengan port paralel ) sudah terbuka, begin 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 end; var on1,on2,on3,on4,onsemua,off1,off2,off3,off4,offs emua:integer; datamasuk:string; begin datamasuk:=memo1.Lines[memo1.Lines.Count1]; 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
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya)
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 begin label1.caption:= 'LED1 nyala'; end else if on2<> 0 then begin label1.caption:= 'LED2 nyala'; end else if on3<> 0 then begin label1.caption:= 'LED3 nyala'; end else if on4<> 0 then begin label1.caption:= 'LED4 nyala'; end else if onsemua<> 0 then begin label1.caption:= 'SEMUA LED nyala'; shape1.Brush.Color:=clred; shape2.Brush.Color:=clred; shape3.Brush.Color:=clred; shape4.Brush.Color:=clred; end else if off1 <> 0 then begin label1.caption:= 'LED1 padam'; end else if off2<> 0 then begin label1.caption:= 'LED2 padam'; end else if off3<> 0 then begin label1.caption:= 'LED3 padam'; end else
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
9
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya) if off4<> 0 then begin label1.caption:= 'LED4 padam'; end else if offsemua<> 0 then begin label1.caption:= 'SEMUA LED padam'; shape1.Brush.Color:=clblack; shape2.Brush.Color:=clblack; shape3.Brush.Color:=clblack; shape4.Brush.Color:=clblack;
Comport1
onrxchar
end; end; var Str, datamasuk: String; begin comport1.ReadStr(str,count); memo1.Text:=memo1.Text+str; datamasuk:=memo1.Lines[memo1.Lines.Count1]; 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 begin label1.caption:= 'LED1 nyala'; end else
Eksekusi program , seharusnya aplikasi menjadi sebagai berikut :
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
10
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya)
Pertama kali klik setting port, pilih com number, baud rate dll
Kemudian klik open port, baru dapat dipergunakan untuk pengontrolan
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
11
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya)
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“ Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
12
( Catatlah semua impianmu dalam lembaran kertas (agar engkau tidak lupa), coretlah setiap impian yang telah terwujud oleh Allah, tambahkan catatan impian yang akan engkau wujudkan, yakinlah semua impian akan terwujud ) (Taufik Adi Sanjaya) 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 :
[email protected] Hp : 085743320570
Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
13