PERTEMUAN II PEMOGRAMAN INPUT -...
Transcript of PERTEMUAN II PEMOGRAMAN INPUT -...
Mikrokontroler-Pemograman Input
PERTEMUAN II
PEMOGRAMAN INPUT
TUJUAN:
- Mahasiswa mampu memprogram mikrokontroller untuk menerima Informasi
dari perangkat input yaitu switch, potensiometer, LDR, phototransistor, mic.
PENGENALAN MIKROKONTROLER
Setiap switch/saklar mekanik baik yang dikendalikan secara manual maupun
dengan listrik (contohnya relay) akan mengalami yang disebut dengan efek pantul atau
“bounching”, yaitu efek yang tidak stabil dalam waktu beberapa saat, sesaat setelah
perubahan keadaan terjadi, misalnya semula ON berupah ke OFF atau sebaliknya.
Gambar 1. Bounching
Gambar 1 bagian kiri memperlihatkan kejadian bounching sesaat dari kondisi OFF
menuju ON, sedangkan yang kanan kejadian bounching dari keadaan On menuju OFF.
Kejadian ini pada mikrokontrol yang mempunyai clock yang cukup tinggi akan dapat
menimbulkan masalah. Salah satu solusi sederhananya agar mikrokontroler tidak salah
dalam menerima data yang diharapkan oleh perancang, maka program diatur
sedemikian rupa agar pada saat keadaan tidak stabil mikrokontroler tidak mengambil
data saklar tesebut, dengan cara menunggu (delay) beberapa saat sampai keadaan stabil.
PERALATAN:
Modul-modul/perangkat keras yang digunakan dalam praktikum ini terdiri dari :
1. Satu buah Kit-MCU (ATMega16)
Mikrokontroler-Pemograman Input
2. Satu buah Kit-Display
a. 1 sub-modul Led (Merah-Kuning-Hijau-Biru)
b. 1 sub-modul Mic
c. 1 buah Buzzer
d. 1 sub-modul Led & Switch
e. 1 sub-modul LDR
f. 1 sub-modul Potensio
g. 1 sub-modul Phototransistor
3. Satu buah Kit Programmer AVR910-Serial
4. Satu buah kabel ISP
5. Satu set kabel jumper yang terdiri :
a. 3 buah kabel data 10 pin
b. 1 buah kabel jumper 2 pin
c. 3 buah kabel jumper 1 pin
Mikrokontroler-Pemograman Input
TUGAS-2.1. CounterUp
Untuk praktikum kali ini, lakukan mounting sebagai berikut :
1. Hubungkan MCU dengan Programmer
2. Hubungkan terminal Port B pada MCU dengan terminal P02 menggunakan
kabel-10 (PERHATIKAN pin-0 pada masing-masing terminal).
3. Dalam tugas ini, praktikan ditugaskan untuk menyalin source code yang
diberikan pada IDE BASCOM.
4. Diharapkan praktikan memahami cara untuk memeriksa salah satu PIN dari
suatu port. Untuk memeriksa keadaan salah satu pin dari suatu Port harus
menggunakan PinX.n, misalnya pada sintax IF.. atau While …
$regfile = "m16def.dat"
$crystal = 8000000
'--------------------------------------------------------
Config Portb.0 = Input
Config Portb.4 = Output
Config Portb.5 = Output
Config Portb.6 = Output
Config Portb.7 = Output
Dim I As Byte
'---------jika I = 3 maka semua lampu mati
I = 3
Portb.0 = 1
Do
If Pinb.0 = 0 Then
Delay
While Pinb.0 = 0
Wend
Waitms 1
I = I + 1
If I > 7 Then
Portb = 0
I = 3
Else
Portb.i = 1
End If
End If
Loop
End
5. Beri nama source code yang anda salin: Tugas2-1.bas
Mikrokontroler-Pemograman Input
6. Compile source code, jika masih terdapat kesalahan perbaiki dan compile ulang.
7. Perlihatkan hasilnya ke asisten.
Tugas tertulis (dibuat pada pada lembar jawaban yang disediakan) :
1. Buatkan diagram alir dari program di atas.
2. Jelaskan manfaat perintah delay pada program di atas
3. Ubah perintah “If Pinb.0 = 0” (tanpa tanda kutip) pada program menjadi “If
PortB.0 = 0” (tanpa tanda kutip). Jelaskan, kesimpulan apa yang didapat.
4. Ubah perintah “Delay” (tanpa tanda kutip) pada program menjadi “Waitms 1”
(tanpa tanda kutip). Jelaskan, kesimpulan apa yang didapat.
5. Jelaskan manfaat perintah “While Pinb.0 = 0 … Wend” yang ada pada
program.
TUGAS-2.2. CounterUpDown
$regfile = "m16def.dat"
$crystal = 8000000
'--------------------------------------------------------
Config Portb.0 = Input
Config Portb.4 = Output
Config Portb.5 = Output
Config Portb.6 = Output
Config Portb.7 = Output
Dim I As Integer
Dim J As Integer
'---------jika I = 3 maka semua lampu mati
I = 3
J = 1
Do
If Pinb.0 = 0 Then
Delay
While Pinb.0 = 0
Wend
Waitms 100
I = I + J
If I > 7 Then
J = -1
I = 7
Else
If I = 3 Then
J = 1
I = 4
End If
Mikrokontroler-Pemograman Input
End If
If J > 0 Then
Portb.i = 1
Else
Portb.i = 0
End If
End If
Loop
End
Tugas Praktikan :
1. Salin source code dan simpan dengan nama file : Tugas2-2.bas
2. Compile & Upload ke dalam MCU
3. Perlihatkan hasilnya ke asisten.
Tugas tertulis (dibuat pada pada lembar jawaban yang disediakan) :
1. Buatkan diagram alir dari program di atas.
2. Jelaskan digunakan untuk apa variabel J pada pada program 2.1 di atas.
TUGAS-2.3. Switch ON/OFF
Tugas Praktikan :
1. Salin source code dan simpan dengan nama file : Tugas2-3.bas
2. Compile & Upload ke dalam MCU
3. Perlihatkan hasilnya ke asisten.
$regfile = "m16def.dat"
$crystal = 8000000
'--------------------------------------------------------
Declare Sub Cekswitch(byval Pnum As Integer)
'--------------------------------------------------------
Config Portb.0 = Input
Config Portb.1 = Input
Config Portb.2 = Input
Config Portb.3 = Input
Config Portb.4 = Output
Config Portb.5 = Output
Config Portb.6 = Output
Config Portb.7 = Output
Mikrokontroler-Pemograman Input
Do
Call Cekswitch(0)
Call Cekswitch(1)
Call Cekswitch(2)
Call Cekswitch(3)
Loop
End
'------------------------------------
Sub Cekswitch(pnum As Integer)
If Pinb.pnum = 0 Then
Delay
While Pinb.pnum = 0
Wend
Waitms 100
Pnum = Pnum + 4
Portb.pnum = Not Portb.pnum
End If
End Sub
Tugas tertulis:
1. Buatkan diagram alir dari program di atas.
TUGAS-2.4. Switch Cerdas cermat
Skenario utama dari program di bawah ini adalah program simulasi tombol yang biasa
digunakan pada pertandingan cerdas cermat.
Algoritmanya adalah sbb. :
1. Diasumsikan peserta pertandingan ada 3 kelompok (Switch-0 s/d Switch-2).
2. Switch-3, digunakan untuk tim juri.
3. Jika salah satu peserta (Switch-0 s/d Switch-2) sudah menekan tombol sehingga
LED yang terkait menyala, maka peserta lain walaupun sudah menekan tombol
tetapi tidak dapat membuat LED menyala.
4. Juri mempersilahkan peserta yang yang pertama kali menekan tombol menjawab
sekaligus menekan tombol reset..
Tugas Praktikan :
1. Salin source code di bawah ini dan simpan dengan nama file : Tugas2-4.bas
2. Compile & Upload ke dalam MCU
Mikrokontroler-Pemograman Input
3. Uji cobakan dengan menekan dua buah tombol peserta secara bersama.
4. Perlihatkan hasilnya ke asisten.
$regfile = "m16def.dat"
$crystal = 8000000
Dim Snum As Integer
'--------------------------------------------------------
Declare Sub Cekswitch(byval Pnum As Integer)
'--------------------------------------------------------
Config Portb.0 = Input
Config Portb.1 = Input
Config Portb.2 = Input
Config Portb.3 = Input
Config Portb.4 = Output
Config Portb.5 = Output
Config Portb.6 = Output
Config Portb.7 = Output
Portb.4 = 0
Portb.5 = 0
Portb.6 = 0
Portb.7 = 0
Do
Call Cekswitch(0)
Call Cekswitch(1)
Call Cekswitch(2)
Call Cekswitch(3)
Loop
End
'-------------------------------------
Sub Cekswitch(pnum As Integer)
If Pinb.pnum = 0 Then
If Pnum = 3 Then
Portb.4 = 0
Portb.5 = 0
Portb.6 = 0
Else
Porta.0 = 1
Snum = Pnum + 4
Portb.snum = 1
'-----------
' 2 baris berikut ini untuk blok pemencetan tombol lainnya
'-----------------
While Pinb.3 = 1
Wend
End If
End If
End Sub
5. Simpan source code ini sekali lagi tetapi dengan nama file : Tugas2-4A.bas
Mikrokontroler-Pemograman Input
6. Ubah source code ini sehingga indentik dengan yang sebelumnya tetapi jika
salah satu led peserta menyala, buzzer-pun ikut menyala dan akan mati jika
switch untuk juri (switch-3) ditekan.
7. Perlihatkan hasilnya ke asisten. (mintalah asisten memberi paraf pada item ini
jika hasil sudah sesuai dengan seharusnya).
8. Lepaskan terminal catu-daya (power suply) dari kit-MCU.
9. Hubungkan terminal pinA.0 ke terminal bz pada Buzzer
10. Hubungkan kembali catu daya
11. Lakukan uji coba.
Tugas tertulis (dibuat pada pada lembar jawaban yang disediakan) :
1. Buatkan diagram alir dari program cerdas cermat yang terakhir (menggunakan
buzzer).
TUGAS-2.5. Pengaturan lampu lalu lintas mobil untuk orang menyebrang.
Pada aplikasi ini diharapakan praktikan dapat mempelajari penggunaan “Const”, yang
digunakan (pada program ini) untuk membuat alias terhadap nomor Port sehingga
memudahkan mengingat penggunaan pin-pin pada Port tertentu.
Skenario dari program aplikasi ini adalah sbb. :
1. Kondisi normal, lampu Hijau untuk mobil & lampu merah untuk peyebrang (orang)
dalam keadaan ON
2. Switch-0 digunakan untuk permintaan menyebrang pada sisi jalan satu
3. Switch-2 digunakan untuk permintaan menyebrang pada sisi jalan satu lagi
4. Jika terdapat ada pemintaan menyebrang :
a. Lampu Merah mobil OFF
b. Lampu Kuning mobil ON 2 detik
c Lampu Kuning mobil OFF
d. Lampu Merah mobil ON
e. Lampu Merah Orang OFF, Lampu Hijau Orang ON selama 5 detik
f. Lampu Kuning blinking, Buzzer ON 2 detik
Mikrokontroler-Pemograman Input
g. Lampu Kuning OFF, Buzzer OFF
h. Lampu Merah Orang ON dan lampu Hijau Mobil ON
5. Kondisi Normal kembali
Catatan :
1. Led biru merupakan alternatif lain terhadap Buzzer.
2. Lepaskan hubungan buzzer dari portA.0 dan hubungkan portC.7 dengan
buzzer, sehingga PortA dapat digunakan untuk keperluan lain.
Tugas Praktikan :
1. Salin source code di bawah ini dan simpan dengan nama file : Tugas2-5.bas
2. Compile & Upload ke dalam MCU
3. Perlihatkan hasilnya ke asisten. (mintalah asisten memberi paraf pada item ini
jika hasil sudah sesuai dengan seharusnya)
$regfile = "m16def.dat"
$crystal = 8000000
Const M_r = 0
Const M_y = 1
Const M_g = 2
Const O_r = 4
Const O_y = 5
Const O_g = 6
Const O_buz = 7
'--------------------------------------------------------
Dim A As Integer
'--------------------------------------------------------
Config PortC = Output
Config PortB.0 = Input
Config PortB.3 = Input
PortC.m_g = 1
PortC.m_y = 0
PortC.m_r = 0
PortC.3 = 0
PortC.o_g = 0
PortC.o_y = 0
PortC.o_r = 1
PortC.o_buz = 0
Do
Mikrokontroler-Pemograman Input
If PinB.0 = 0 Or PinB.3 = 0 Then
'---------- Untuk Bounching
Waitms 100
'----------------- lampu stopan mobil : hijau mati, kuning nyala
PortC.m_g = 0
PortC.m_y = 1
Waitms 2000
'----------------- lampu stopan orang : merah mati, hijau nyala
PortC.o_r = 0
PortC.o_g = 1
'----------------- lampu stopan mobil : kuning mati, merah nyala
PortC.m_y = 0
PortC.m_r = 1
Waitms 5000
'------------------ lampu stopan orang : hijau mati, buzzer hidup
PortC.o_g = 0
PortC.o_buz = 1
A = 0
While A < 5
PortC.o_y = 1
Waitms 200
PortC.o_y = 0
Waitms 200
A = A + 1
Wend
PortC.o_buz = 0
' waitms 2000
PortC.m_g = 1
PortC.o_y = 0
PortC.o_r = 1
PortC.m_r = 0
End If
Loop
End
Tugas tertulis (dibuat pada pada lembar jawaban yang disediakan) :
1. Buatkan diagram alir dari program cerdas cermat yang terakhir (menggunakan
buzzer).
TUGAS-2.6. LED Blinking dengan potensio Tugas Praktikan :
1. Hubungkan antara terminal port C pada kit-MCU dengan terminal port P01 pada
kit-Display menggunakan kabel-10
2. Hubungkan antara terminal pin A.0 pada kit-MCU dengan terminal pin dt port
POT pada kit-Display, terminal pin G pada kit-MCU dengan terminal pin G port
Mikrokontroler-Pemograman Input
POT pada kit-Display, dan terminal pin + pada kit-MCU dengan terminal pin +
port POT pada kit-Display menggunakan kabel jumper 3 pin.
3. Salin source code di bawah ini dan simpan dengan nama file : Tugas2-6.bas
4. Compile & Upload ke dalam MCU
'-------------------------------------------------------- '
' Menyalakan/mematikan LED Port C dengan memutar Potensiometer,
'
'--------------------------------------------------------
$regfile = "m16def.dat"
$crystal = 8000000
'--------------------------------------------------------
Config Portc = Output
Config Porta.0 = input
'--------------------------------------------------------
'RUTIN UTAMA
'--------------------------------------------------------
Do
If Pinb.0 = 0 Then
Delay
While Pinb.0 = 0
Wend
Waitms 1
Mikrokontroler-Pemograman Input
PortC = 255 ' Nyalakan LED
Waitms 100 ' tunggu selama 100 mdetik
Else
PortC = 0 ' Matikan LED
Waitms 100 ' tunggu selama 100 mdetik
End If
Loop
End
5. Cobalah putar potensiometer, dan perhatikan yang terjadi
6. Perlihatkan hasilnya ke asisten.
Tugas praktikan:
a. Ubahlah mounting MCU dengan potensio, hubungkan MCU dengan
LDR dengan menggunaan pinA.0 pada MCU sama seperti saat mounting
dengan potensio. Ubah-ubah intensitas cahaya yang diterima LDR (bisa
gunaan senter). Jelaskan apa yang terjadi.
b. Ubahlah mounting MCU dengan LDR, hubungkan MCU dengan Mic
dengan menggunaan pinA.0 pada MCU sama seperti saat mounting
dengan potensio. Ubah-ubah intensitas suara yang diterima Mic (Suara
keras atau sepi). Jelaskan apa yang terjadi.
c. Ubahlah mounting MCU dengan Mic, hubungkan MCU dengan
Phototransistor dengan menggunaan pinA.0 pada MCU sama seperti saat
mounting dengan potensio. dekatkan (pantulkan) benda berwarna hitam
diatas phototransistor, kemudian dekatkan (pantulkan) benda berwarna
putih diatas phototransitor. Coba dengan benda berwana lain. Jelaskan
apa yang terjadi.
Tugas tertulis:
a. Jelaskan fungsi sensor Switch, Potensiometer, LDR, Mic, dan
Phototransistor.
Latih Kretivitas
Sampai sejauh ini, Anda telah belajar mengenai pemograman mikrokontroller untuk
peangat input lampu LED dan Buzzer, serta pemograman perangkat input switch, sensor
potensiometer, LDR, Mic, dan phototransistor. Produk-produk bermanfaat apa yang
bisa Anda buat menggunakan perangkat tersebut saat ini? Jelaskan!