Read more
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
2 Reviews
Thank you brooo
ReplyDeletesama sama
DeleteSilakan dikomentari