pertemuan ii pemograman input -...

12
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)

Upload: phambao

Post on 28-May-2019

237 views

Category:

Documents


0 download

TRANSCRIPT

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!