Post Top Ad

Post Top Ad

Kendali nyala led via komunikasi serial dengan Delphi Blog Adi Sanjaya Global Techno Solution - AS-GTS


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,
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 computer (dikahiri tanda enter)
Balasan dari Mikrokontroler
Aksi mikrokontroler saat ada perintah dari komputer
Aksi pada computer
1
ON1
ON1-OK
Menyalakan LED di pin C.4
Menampilkan LED1 nyala
2
OFF1
OFF1-OK
Memadamkan LED di pin C.4
Menampilkan LED1 padam
3
ON2
ON2-OK
Menyalakan LED di pin C.5
Menampilkan LED2 nyala
4
OFF2
OFF2-OK
Memadamkan LED di pin C.5
Menampilkan LED2 padam
5
ON3
ON3-OK
Menyalakan LED di pin C.6
Menampilkan LED3 nyala
6
OFF3
OFF3-OK
Memadamkan LED di pin C.6
Menampilkan LED3 padam
7
ON4
ON4-OK
Menyalakan LED di pin C.7
Menampilkan LED4 nyala
8
OFF4
OFF4-OK
Memadamkan LED di pin C.7
Menampilkan LED4 padam
9
ON-ALL
ON-ALL-OK
Menyalakan LED di pin C4-7
Menampilkan SEMUA LED nyala
10
OFFALL
OFF-ALL-OK
Memadamkan LED di pin C4-7
Menampilkan 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
cls
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
         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 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
Buttonopen
16
Button
Caption
Close


Name
ButtonClose
17
Button
Caption
Setting


Name
Buttonset


Selanjutnya untuk tampilan desain aplikasi nya adalah sebagai berikut :


Source code untuk masing masing komponen dapat dilihat pada tabel sebagai berikut:
no
Nama komponen
event
Source
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;
3
Button2
onclick
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;
4
Button3
onclick
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;
5
Button4
onclick
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;
6
Button5
onclick
begin
if button5.Caption='ON SEMUA' then
begin
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;

Buttonset
onclick
begin
comport1.ShowSetupDialog;
end;

Buttonclose
onclick
Begin
Application.Terminate;
End;

Buttonopen
onclick
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;

Memo1
onchange
var on1,on2,on3,on4,onsemua,off1,off2,off3,off4,offsemua:integer;
datamasuk:string;
begin
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);

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
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;

end;
end;

Comport1
onrxchar
var Str, datamasuk: String;
begin
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
begin
label1.caption:= 'LED1 nyala';
end else


Eksekusi program , seharusnya aplikasi menjadi sebagai berikut :


Pertama kali klik setting  port, pilih com number, baud rate dll


Kemudian klik open port, baru dapat dipergunakan untuk pengontrolan



video pengujian Kendali nyala led via komunikasi serial dengan Delphi adalah sebagai berikut:



jika mebutuhkan source code  aplikasi lengkap dapat membeli ebook pada link dibawah ini :

http://www.embeddedsystem.itstoshare.com/2011/11/e-book-tutorial-version-step-by-step.html