Sistem Antrian dengan Mikrokontroler AVR
Mesin antrian atau sistem antrian yang akan kita buat hampir mirip dengan yang terpasang di perkantoran, tentu saja yang mempunyai loket. Bank, penjualan tiket KA, ruang pendaftaran rumah sakit misalnya. Nah pada aplikasi mikrokontroler AVR kali ini kita akan membuatnya dengan fitur yang sederhana dulu. Cukup tampilan angka, belum memakai suara. Jadi tampilan nomor antrian dan nomor loket.
Siapkan mikrokontroler ATmega16, bisa juga pakai ATmega8535 atau ATmega32, Enam digit seven segment.
Rangkaian seperti pada gambar.
Untuk nomor loket dibuat 2 digit, ini fleksibel ya, boleh 3 digit hingga loket ke 999 (banyak banget..?) atau cukup 1 digit, yang mampu menangani loket 1 s/d 9.
Nomor antrian demikian juga, boleh anda buat 3 digit atau jumlah digit yang lain.
Programnya kita buat saja dengan BASCOM-AVR.
$regfile = “m16def.dat”
$crystal = 1000000
Config Portb = Output
Config Porta = Output
Config Portd = Input
Portd = &HFF
Dim I As Byte , J As Byte , Tem1 As Integer , Tem2 As Integer
Dim Rib As Integer , Rat As Integer , Pul As Integer , Sat As Integer
Dim Antrian As Word , Loket As Byte , Pul_loket As Integer , Sat_loket As Integer
Dim No_loket As Byte
Loket = 0
Antrian = 0
Do
If Pind.0 = 0 Then
Loket = 1
Incr Antrian
Waitms 100
Elseif Pind.1 = 0 Then
Loket = 2
Incr Antrian
Waitms 100
Elseif Pind.2 = 0 Then
Loket = 3
Incr Antrian
Waitms 100
End If
Rib = Antrian / 1000
Tem1 = Antrian Mod 1000
Rat = Antrian / 100
Tem2 = Antrian Mod 100
Pul = Antrian / 10
Sat = Antrian Mod 10
Pul_loket = Loket / 10
Sat_loket = Loket Mod 10
Portb = &B000001
Porta = Lookup(pul_loket , Angka)
Waitms 5
Portb = &B000010
Porta = Lookup(sat_loket , Angka)
Waitms 5
Portb = &B000100
Porta = Lookup(rib , Angka)
Waitms 5
Portb = &B001000
Porta = Lookup(rat , Angka)
Waitms 5
Portb = &B010000
Porta = Lookup(pul , Angka)
Waitms 5
Portb = &B100000
Porta = Lookup(sat , Angka)
Waitms 5
Loop
End
Angka:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90
Tombol dipakai untuk memanggil nomor antrian. Ketika tombol di loket 1 ditekan maka nomor antrian akan bertambah 1 dan tampilan nomor loket berupa angka ‘1’. Demikian juga jika tombol 3 ditekan, nomor antrian akan bertambah dan tampilan nomor loket menjadi ‘3’.
mas seven segmen untuk realnya, gimana menghubungkannya.trimakasih.
Sesuai dengan schematicsnya, segmen di porta, digit di portb
mas mau nanya sistem antriannya pada hitungan lebih dari 99 tampilan angkanya ga jelas,kira kira kekeliruannya dimana ya mas,mohon bantuannya
terimakasih mas
makisah ya inform nya, membantu banget 😀
klo cristal di pergunakan 16mhz mas gimana apa eksekusi program nya berubah juga?
mas kalau akses tombolnya dikendalikan dari pc kira kira source codenya bagaimana
kalo source nya bisa panjang tp prinsipnya tinggal pakai serial komunikasi mas
mas kalo boleh saya minta gambaran source codenya menggunakan delphi7 dan mohon dikirim ke email sicangklong@yahoo.co.id-makasih mas
kalau yg konek dg Delphi belum punya mas alias belum bikin …
mas, codingnya pas tak coba kog tampilannya jadi acak ya?
Coba cek frequency dari clock/crystalnya ..
caranya gimana ms? maklum masih blajar,,
Lha itu sudah ada software sama rangkaian hardwarenya..
sekarang tampilannya 00 0000 tapi waktu pushbuttonnya di tekan angkanya nggk mau berubah?
cek hardwarenya…
mas, saya coba buat dengan rangkaian aslinya… hasilnya hanya kedip kedip doang, itu solusinya gimana ya mas…?
Perhatikan clock nya, harus sama. Bisa hardware yang menyesuaikan atau software yang dirubah.
Trims
MAS KALAU ANTRANNYA DITAMBAH PAKAI SUARA GIMANA CARANYA
Bisa ditambahkan ISD mas.
Cara nambah modul ISD gmn mas?
Caranya tergantung jenis ISD nya mas, ada yang paralel ada yang serial. Setelah dirangkai (bisa cek datasheet atau referensi sesuai jenis/tipe ISD) trus siapkan rekamannya yang nantinya akan diakses (berdasar alamat suara) setelah proses nilai ‘antrian’ ada.
BISA DIJELASKAN MAS CARA PENYAMBUNGAN ISD DENGAN NO ANTRIAN NYA
Harus ndesain dulu mas, tapi yang jelas tergantung tipe ISD nya juga, ada beberaa jenis seperti ISD 2560. Cek datasheet-nya disitu sudah ada cara nyambung + mrogramnya.
mas mau sedikit koreksi yah
Rib = Antrian / 1000
Tem1 = Antrian Mod 1000
Rat = Antrian / 100
Tem2 = Antrian Mod 100
Pul = Antrian / 10
Sat = Antrian Mod 10
Pul_loket = Loket / 10
Sat_loket = Loket Mod 10
harusnya jadi
Rib = Antrian / 1000
Tem1 = Antrian Mod 1000
Rat = Tem1 / 100
Tem2 = Antrian Mod 100
Pul = Tem2 / 10
Sat = Antrian Mod 10
Pul_loket = Loket / 10
Sat_loket = Loket Mod 10
kalo ga gitu, nanti setelah 99, maka angkanya jadi aneh mas. mohon maaf sebelumnya, makasih
Ok bener mbak Sarah, trims koreksinya.
mas kalau pakai atmega 8535 bisa ngak
Bisa saja mas.
Ijin Memcoba ya Boss, makasi banyak
OK, silakan mas Budi..
Mas.. gimana cara nyisipin suaranya, jdi pas tombol Nomer antri di takan muncul suara bacanya ..???
Wah lumayan rumit mas, tapi jawaban ringkasnya gini : pertama siapkan device untuk merekam dan mengeluarkan suaranya, biasanya pakai ISD, tipe ISD juga banyak, cara komunikasi macem2 yang tentu akan menentukan cara memprogramnya. Nah kalau ISD dah ready selanjutnya siapkan rekamannya untuk suara yang akan dimunculkan, kalau sudah kemudian addressing/pengalamatan yang fungsinya ketika di programnya nanti akan memudahkan untuk dipanggil berdasarkan alamat suara tersebut.
Mas, kalo rangkaian kita tambah buzzer bisa tidak ?
Lalu codingnya yg dirubah dimana ?
Maklum , masih belajar ..
Bisa saja, misal di PORTC.3, maka untuk menhidupkan buzzer : PORTC.3=1 dan untuk mematikan buzzer : PORTC.3 =0, tentu sebelumnya PORTC.3 diset dulu sebagai output (DDRC.3=1)
mas minta coding nya yg sudah jadi kalau boleh
Disitu sudah ada kan mas Rendi, tinggal copas aja 🙂
codingnya ko error ya??? ane lagi butuh buat tugas 🙁
Versi compilernya mungkin mas
Mas kalo pake cvAVR bisa engga?
Bis saja mas
Ini codingannya langsung di copykan ke cv avr mas?
Itu pakainya BASCOM-AVR, jadi beda dg CVAVR yang bahasa C, tapi secara prinsip kerja sama saja.