1005 ZenRestiMaulana Job11
1005 ZenRestiMaulana Job11
DAN
PEMROGRAMAN KOMPUTER
PERCOBAAN 11
PENGONTROLAN TRAFFIC LIGHT
BAB I
POLITEKNIK NEGERI PADANG
DIII TEKNIK LISTRIK
TUJUAN
1. Mampu membuat program untuk menampilkan objek lingkaran merah, hijau dan
kuning secara bergantian
2. Mampu mengatur waktu aktif yang berbeda pada ketiga objek tersebut
3. Mampu membuat program untuk menampilkan angka hitungan waktu mundur
BAB II
TEORI DASAR
TIMER
Time merupakan komponen pengatur waktu yang ada pada tab system dengan tab icon
. Gunakan Komponen Pengatur waktu ini untuk mencetuskan (mentrigger) suatu peristiwa
(event), untuk satu waktu ataupun berulang-ulang, setelah melalui suatu interval
yang
ditentukan. Hal ini dilakukan dengan menetapkan jumlah hitungan waktu (interval)
pada komponen waktu tersebut.
Tugas dari timer adalah untuk menetapkan suatu hitungan waktu yang mesti
dilakukan sebelum event timer di trigger menggunakan properti interval. Untuk
menghentikan event yang di kerjakan oleh timer adalah dengan memberikan nilai false pada
properti enabled dari komponen timer. Pengaturan interval waktu melalui program dilakukan
dengan instruksi : Timer1.Interval := 1000 untuk interval 1 detik.
BAB III
LANGKAH KERJA
5. Double click pada icon Timer dan lengkapi program menjadi sbb:
implementation
{$R *.DFM}
Procedure TForm1.Timer2Timer(sender:tobject);
Begin
Label1.Caption := waktu;
Waktu := waktu – 1;
End;
begin
shape1.visible := true; // merah nyala
shape2.visible := false; // kuning nyala
shape3.visible := false; // hijau padam
waktu := 20; // hitung mundur mulai 20
timer1.interval := 40000;
end;
end.
3. Ganti masing-masing interval waktu dengan set nilai yang lain. Jalankan progam,
buatkan tabel pengamatan dan catat hasilnya
BAB IV
TABEL PENGAMATAN
Label
Label captio
Kuning
Kuning
kuning
kuning
Merah
Merah
Merah
Merah
Hijau
Hijau
Hijau
Hijau
k
Label
ke-
caption
caption
1 40 On Off Off caption
35 Off On Off 40 On Off Off 35 Off On Off
10 30 On Off Off 25 Off On Off 30 On Off Off 25 Off On Off
20 20 On Off Off 15 Off On Off 20 On Off Off 15 Off On Off
30 10 On Off Off 5 Off On Off 10 On Off Off 5 Off On Off
35 5 On Off Off 0 Off On Off 5 On Off Off 0 Off On Off
36 4 On Off Off 5 Off Off On 4 On Off Off 5 Off Off On
40 0 On Off Off 0 Off Off On 0 On Off Off 0 Off Off On
41 35 Off On Off 40 On Off Off 35 Off On Off 40 On Off Off
50 25 Off On Off 31 On Off Off 25 Off On Off 31 On Off Off
60 15 Off On Off 21 On Off Off 15 Off On Off 21 On Off Off
70 5 Off On Off 11 On Off Off 5 Off On Off 11 On Off Off
75 0 Off On Off 6 On Off Off 0 Off On Off 6 On Off Off
76 5 Off Off On 5 On Off Off 5 Off Off On 5 On Off Off
81 0 Off Off On 0 on off Off 0 Off Off On 0 On Off Off
82 40 On Off Off 35 Off On Off 40 On Off Off 35 Off On Off
BAB IV
ANALISA DAN DISPLAY PROGRAM
Untuk design form dalam program ini diperlukan beberapa komponen yaitu panel,
shape, button, timer, bitbtn, serta label.
Panel pertama digunakan untuk membentuk tampilan jalan raya dengan dua
arah
Panel kedua dimasukkan kedalam panel pertama untuk membentuk symbol
traffinc light
Tiga buah shape dimasukkan pada panel kedua sebagai inisiasi dari lampu
Beberapa panel tambahan lainnya ditambahkan ke dalam panel pertama untuk
membentuk garis-garis zebra cross serta pembatas jalan raya dua arah.
Sebuah tombol start untuk menghidupkan traffic light
Dan sebuah stop tombol untuk mematikan traffic light
Sebuah bitbtn dengan bkclose untuk keluar dari program
Display:
Yang kedua adalah pengaturan visibilitas ketiga lampu untuk syarat yang
dibutuhkan dalam program if dalam procedure star1.
yang ketiga adalah pemanggilan procedure start1. Procedure ini
diimplementasikan untuk mendukung program stop serta untuk
mengoptimalkan proses pada tombol start jika diklik untuk kedua kali atau
seterusnya setelah tombol stop di klik.
Pada jobsheet procedure ini seharusnya tidak ada. Namun tanpa procedure ini,
waktu menyalanya sebuah lampu hanya akan sesuai pada saat klik start
pertama kali. Kemudian setelah diklik stop, lalu start lagi, interval pada pada
timer akan dirubah sesuai kondisi if yang terpenuhi. Hanya saja beberapa
instruksi lainnya tidak akan dieksekusi. Contoh ‘jika lampu merah menyala
ketika start di klik maka lampu yang menyala berganti menjadi hijau dan
interval waktu menjadi 35 detik’ dalam hal ini untuk eksekusi start setelah stop
yang akan dijalankan hanya merubah interval waktu menjadi 35 detik,
sedangkan lampu yang menyala tetap merah dan akan menyala selama 35
detik.
Ini akan menimbulkan kerancuan karena program harusnya menyalakan lampu
merah selama 40 detik.
Kegunaan procedure ini akan lebih terlihat pada program kedua
Listing programnya dalam procedure start1 adalah sebagai berikut:
procedure TForm1.start1; //program dituliskan pada privet kemudian
diimplementasikan dengan shortcut CTRL+SHIFT+C
begin
shape1.visible := true; // merah nyala
shape2.visible := false; // kuning padam
shape3.visible := false; // hijau padam
if shape1.Visible=true then
begin
timer1.Interval:=40000;
end
else
begin
if shape2.Visible=true then
begin
timer1.Interval:=5000;
end
else
begin
timer1.Interval:=35000;
end;
end;
end;
Pada procedure start, karena juga terdapat pemanggilan procedure start1 maka
konsep penyalaan lampu menjadi sedikit berbeda namun tidak menggangu
program. Tanpa start1, ketika lampu merah menyala saat diklik start, saat itu
juga akan berganti menjadi lampu hijau yang menyala selama 35 detik untuk
memenuhi if pertama dalam procedure timer. Namun karena di sini terdapat
pemanggilan procedure start1 maka start1 akan dipenuhi terlebih dahulu
dengan lampu merah hidup selama 40 detik. Ketika start1 sudah terpenuhi
maka eksekusi beralih pada if pertama timer, yaitu untuk menyalakan lampu
hijau 35 detik. Selang waktu 35 detik setelah lampu hijau menyal maka akan
diteruskan dengan if kedua, sebagaimana if kedua memberikan syarat lampu
hijau menyala.
end
else
if shape3.visible = true then
begin
shape1.visible := false; // merah padam
shape2.visible := true; // kuning nyala
shape3.visible := false; // hijau padam
timer1.interval := 5000;
ini adalah if kedua, dengan syarat yang harus dipenuhi adalah lampu hijau
menyala. Dengan program pada if pertama akan otomatis membuat lampu
hijau menyala, secara otomatis if kedua sudah terpenuhi. Sebelum lampu
kuning menyala, program terlebih dahulu mengeksekusi if kedua start1 dengan
menyalakan lampu hijau selama 35 detik. Barulah setelah itu perintah pada if
kedua dilakukan yaitu untuk menghidupkan lampu kuning selama 5 detik.
Setelah itu akan dilanjutkan dengan percabangan terakhir yaitu else.
end
else
begin
shape1.visible := true; // merah nyala
shape2.visible := false; // kuning nyala
shape3.visible := false; // hijau padam
timer1.interval := 40000;
ini adalah kondisi terakhir yang mungkin dipenuhi, yaitu lampu selain syarat if
pertama dan kedua menyala. Dengan program pada if kedua akan otomatis
membuat lampu kuning menyala setelah 35 detik lampu hijau, dan lampu
kuning bukan syarat if pertama maupun kedua. Maka secara otomatis if ketiga
sudah terpenuhi. Sama seperti sebelumnya, di sini lampu kuning akan menyala
dulu sesuai procedure start1 yaitu selama 5 detik, setelah itu baru akan
dilakukan perubahan nyala lampu yaitu lampu merah selama 40 detik. Dengan
kata lain program kembali melanjutkan if pertama.
end;
dari sini bisa dikatakan bahwa procedure start1 digunakan untuk melengkapi
proses penyalaan lampu. Jika pada timer, ketika suatu lampu menyala sebagai
syarat kondisi terpenuhi, maka lampu itu akan langsung dimatikan sesuai
instruksi yang di dalamnya, dan interval waktu hanya diberikan untuk proses
di dalam if. Dengan adanya start1 maka setiap lampu menyala akan diberi
interval termasuk dalam rangka pemenuhan kondisi if sebelum program
didalamnya dieksekusi. Sehingga ketika setelah di stop dan di start lagi, tidak
ada kerancuan lagi dala waktu penyalaan lampu. Karena semua proses sudah
ditetapkan interval waktunya.
end;
Untuk tombol stop, ketika di klik maka proses yang dijalankan adalah sebagai berikut:
procedure TForm1.stopClick(Sender: TObject);
begin
timer1.enabled:=false; // me-nonaktifkan timer1 //untuk mematikan timer
shape1.visible := true; // merah nyala
shape2.visible := true; // kuning padam
shape3.visible := true; // hijau padam
untuk mendisplay lagi keseluruhan shape sebagai inisiasi bahwa proses dihentikan.
end;
DISPLAY:
Setelah run, terlihat tampilan program menghilangkan beberapa komponen yang ada.
Seperti reset, pause,dan continue ini karena pada keadaan awal fungsi yang bisa
dijalankan hanya start.
Deprogram pada procedure Form sebagai berikut:
procedure TForm1.FormActivate(Sender: TObject);
begin
continue.Enabled:=false; //untuk mematikan tombol continue
pause.Enabled:=false; //untuk mematikan tombol pause
reset.enabled:=false; //untuk mematikan tombol reset
continue.Visible:=false; //untuk menghilangkan tombol continnue
pause.visible:=false; //untuk menghilangkan tombol pause
reset.Visible:=false; //untuk menghilangkann tombol reset
end;
KONDISI PADA 40 DETIK PERTAMA DENGAN SISA WAKTU 33 DETIK SETELAH TOMBOL START DI
KLIK
Pada procedure start, dibandingkan dengan sebelumnya tidak ada perubaha dalam
segi program yang sudah dituliskan. Hanya saja dengan adanya hitung mundur yang
ditampilkan maka pada procedure start ditambahkan instruksi untuk mengaktifkan
timer kedua dan juga beberapa instruksi untuk mengatur tampilan button.
Beberapa instruksi yang ditambahkan tersebut adalah sebagai berikut:
1. Penambahan instruksi pada procedure timer1 dan juga procedure start1. Nantinya
akan diproses hitung mundur maka dibutuhkan sebuah label untuk menampilkan
angka. Pada property caption untuk label harus dibuat sembarang angka, agar
dalam eksekusi tidak terjadi error.
Setelah itu juga pada setiap if dalam procedure timer1 dan juga start1 diatur lagi
caption label agar sesuai dengan interval yang dituliskan.
procedure TForm1.Timer1Timer(Sender: procedure TForm1.start1;
TObject); begin
begin if shape1.Visible=true then
if shape1.visible = true then begin
begin label4.Caption:='40';
shape1.visible := false; timer1.Interval:=40000;
shape2.visible := false; end
shape3.visible := true; else
label4.caption:= '35'; begin
timer1.interval := 35000; if shape2.Visible=true then
end begin
else label4.caption:='5';
if shape3.visible = true then timer1.Interval:=5000;
begin end
shape1.visible := false; else
shape2.visible := true; begin
shape3.visible := false; label4.caption:='35';
label4.caption:='5'; timer1.Interval:=35000;
timer1.interval := 5000; end;
end end;
else end;
begin
shape1.visible := true;
shape2.visible := false;
shape3.visible := false;
label4.caption:= '40';
timer1.interval := 40000;
end;
end;
yaitu menghidupkan lampu hijau selama 35 detik dan label caption juga diubah
jadi 35. Karena label captionnya dirubah, maka timer dua akan langsung memulai
perhitungan lagi pada angka 35 sebelum memasuki nilai minus. Begitu seterusnya
selama program berjalan.
3. Penambahan instruksi untuk menghilangkan beberapa komponen button.
continue.Enabled:=false;
pause.Enabled:=true;
reset.enabled:=true;
continue.Visible:=false;
pause.visible:=true;
reset.Visible:=true;
Ketika tombol pause diklik maka hitung mundur berhenti pada angka terakhir yang
ditampilkan, serta lampu terakhir yang hidup. Kemudian muncul sebuah tombol
continue. Pause memilik program yang singkat karena hanya digunakan untuk
menghentikan lampu dan juga hitung mundur tanpa perubahan parameter lainnya
maka cukup dilakukan dengan merubah enabled kedua timer menjadi false sebagai
berikut:
Dengan di-klik-nya tombol continue, berarti bahwa pilihan yang diambil adalah untuk
melanjutkan proses dengan sisa waktu yang tersedia. Untuk memproses program
seperti ini, maka data pada caption harus diambil lagi, dan digunakan unntuk merubah
interval pada timer1 agar berjalan selama detik yang sama dengan caption dari label.
procedure TForm1.continueClick(Sender: TObject);
var waktu1:integer;
begin
timer1.enabled:=true; // meng-aktifkan timer1
timer2.enabled:=true; // meng-aktifkan timer2
waktu1:=strtoint(label4.Caption);
timer1.Interval:=waktu1 * 1000;
start.Visible:=false;
Dalam display program ketika di pause menunjukkan angka 25 pada label4 kemudian
caption pada label4 dipanggil sebagai integer dalam variable waktu. Dan digunakan
sebagai nilai dari interval timer1 dengan dikalikan seribu karena satuan pada interval
adalah milisekon. Dari sini lampu merah akan menyala sesuai sisa waktu yaitu 25,
dan ketika lampu berubah maka, intevalnya akan kembali sesuai instruksi pada
procedure timer1 dan procedure start1.
Yang perlu diperhatikan disini adalah interal yang dirubah adalah interval pada timer1
karena yang menentukan lamanya suatu lampu akan hidup adalah timer 1. Sedangkan
timer 2 hanya berfungsi untuk menampilkan hitung mundur, maka intervalnya harus
dibiarkan tetap berada dalam angka 1000ms atau 1 detik agar pengurangan angka
pada label terjadi setiap detik, sehingga selaras denga interval waktu pada timer1.
end;
Ada penambahan beberapa instruksi pada tombol reset jika dibandingkan dengan
tombol sebelumnya. Namun hanya instruksi sederhana untuk menghilangkan tombol
pause, continue, dan reset itu sendiri sebagai inisiasi bahwa program kembali ke
kondisi awal.
procedure TForm1.resetClick(Sender: TObject);
begin
timer1.enabled:=false; // me-nonaktifkan timer1
timer2.enabled:=false; // me-nonaktifkan timer2
shape1.visible := true; // merah nyala
shape2.visible := true; // kuning padam
shape3.visible := true; // hijau padam
label4.Caption:='';
start.Enabled:=true;
start.visible:=true;
pause.enabled:=false;
pause.Visible:=false;
continue.Enabled:=false;
continue.Visible:=false;
reset.Visible:=false;
end;
Untuk traffic light empat jalur, cukup ditambahkan desain yang sama seperti
sebelumnya dengan masing-masing jalur memiliki timernnya tersendiri. Setiap jalur
mempunyai dua timer, yang pertama digunakan untuk mengontrol lampu pada jalur
tersebut, dan timer kedua untuk menampilkan hitung mundur.
Pembagian timer:
1. Timer 1 untuk control lampu pada jalur 1
Timer 2 untuk control lampu pada jalur 1
2. Timer 3 untuk control lampu pada jalur 2
Timer 4 untuk control lampu pada jalur 2
3. Timer 5 untuk control lampu pada jalur 3
Timer 6 untuk control lampu pada jalur 3
4. Timer 7 untuk control lampu pada jalur 4
Timer 8 untuk control lampu pada jalur 4
DISPLAY:
Program ini walaupun terlihat sedikit rumit dengan listing program yang cukup
panjang karena digunakan timer yang berbeda untuk masing-masing jalur sehingga
pada program dibuatkan procedurenya satu persatu. namun pada dasarnya setiap
procedure yang ada pada program ini sama sekali tidak berbeda secara struktur
maupun instruksi yang ada jika dibandingkan dengan program sebelumnya. Dimana
timer pertama pada setiap jalur digunakan mengontrol lampu, maka untuk masing-
masinya harus dibuatkan procedure tambahan yaitu start1 untuk jalur 1, start2 untuk
jalu 2, start3 untuk jalur 3 dan start4 untuk jalur 4. Kemudian pada masing-masing
jalur juga ditambahkan satu timer lagi untuk mengatur hitung mundur, sehingga
terdapat procedure yang berbeda untuk masing-masing timer.
Perbedaan pada tiap-tiap procedure ini hanya terdapat pada nama komponen yang
digunakan dan selebihnya baik struktur, konsep dan juga instruksi adalah sama.
Satu poin lagi yang berbeda adalah, lampu yang dinyalakan terlebih dahulu. Ada dua
kelompok penyalaan lampu yaitu:
1. Jalur 1 dan 3 menyala bersamaan dengan lampu dan waktu yang sama. Lampu
pertama yang menyala pada jalur ini adalah lampu merah dengan waktu 40 detik,
kemudian menyesuaikan dengan instruksi yang ada pada timer untuk jalur 1 dan
jalur 3
2. Jalur 2 dan 3 menyala bersamaan dengan lampu dan waktu yang sama namun
berbeda dari jalur 1 dan 3. Lampu pertama yang menyala pada jalur ini adalah
lampu hijau dengan waktu 35 detik, kemudian menyesuaikan dengan instruksi
yang ada pada timer untuk jalur 2 dan jalur 4
1) 35 detik pertama pada jalur 2 dan 4 dengan lampu hijau menyala dan sisa waktu 32 detik
2) 40 detik pertama jalur 1 dan 3 dengan lampu merah menyala dengan sisa waktu 37 detik
3) 5 detik berikutnya pada jalur 2 dan 4 dengan lampu kuning menyala dan sisa waktu 2 detik
4) masih dalam interval 40 detik pertama pada jalur 1 dan 3 dengan lampu merah masih menyala dan sisa waktu 3
detik
5) 40 detik berikutnya pada jalur 2 dan 4 dengan lampu merah menyala dan sisa waktu 22 detik
6) 35 detik berikutnya pada jalur 1 dan 3 dengan lampu hijau menyala dan sisa waktu 17 detik
7) masih dalam interval 40 detik jalur 2 dan 4 dengan lampu merah masih menyala dan sisa waktu 3 detik
8) 5 detik berikutnya pada jalur 1 dan 3 dengan lampu kuning menyala dan sisa waktu 3 detik
Tampilan setelah tombol pause ditekan, lampu berhenti pada lampu terakhir yang
menyala dan hitung mundur berhenti dan menampilkan angka terakhir yang ditampika
saat tombol pause di tekan.
Jika pada program sebelumnya hanya dibuatkan untuk mengubah enabled timer 1 dan
2 menjadi false. Dalam program ini ditambahkan kedalamnya instruksi untuk
merubah enabled seluruh timer.
Di sini semua interval pada timer satu persatu harus di buatkan seperti procedure
continue sebelumnya dengan cara yang sama.
IMPLEMENTASI PROGRAM
BAB VI
KESIMPULAN
Setelah dilakukan percobaan membuat control traffic light, dapat ditarik kesimpulan sebagai
berikut: