Pada kesempatan ini akan dibahas mengenai
bagaimana cara membuat alat yang bisa digunakan untuk mendeteksi warna, alat
ini menggunakan sensor warna TCS3200 dengan sensotifitas yang sangat tinggi
sehingga bisa untuk mendeteksi warna apapun, mikrokontroller yang digunakan
yaitu ATMega16, untuk bentuk alatnya seperti Gambar 6.44a berikut.
Warna yang akan menjadi contoh untuk dideteksi
oleh alat ini yaitu warna merah, biru, hijau, kuning, putih, hitam dan pink,
jika mengingi nkan lebih banyak warna dapat ditambahkan lagi dengan mengubah
sedikit pada bagian programnya.
Bentuk Sensor Warna TCS3200
Program BASCOM AVR
$regfile = "m16def.dat"
$crystal
= 12000000
$hwstack
= 40
$swstack
= 16
$framesize
= 32
Config
Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config
Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config
Lcd = 16 * 2
Cursor
Off
'
**** inisialisasi penggunaan pin pada sensor warna
Config
Portc = Output
Config
Portd.6 = Output
Config
Portd.2 = Output
Config
Portd.3 = Output
Config
Portd.4 = Output
Config
Portd.5 = Output
Config
Portd.7 = Input
Portd.7
= 1
Outhz
Alias Pind.7
S2
Alias Portd.6
S3
Alias Portd.2
S0
Alias Portd.3
S1
Alias Portd.4
Oe
Alias Portd.5
'***
inisialisasi frequensi
Dim
Tanda1detik As Bit
Dim
Frequensi As Word
Dim
Fmerah As Word
Dim
Fhijau As Word
Dim
Fbiru As Word
Dim
Fputih As Word
Portc
= 255
'inisialisasi
penggunaan timer 1/4 detik untuk penghitung frekuensi
Config
Timer1 = Timer , Prescale = 256
Const
Inisial = &HAE80 '5740
On
Timer1 Timer1_isr ' timer0 overflow interrupt
Tcnt1l
= Low(inisial)
Tcnt1h
= High(inisial)
Disable
Timer1 ' aktifkan timer enable Ovf0
Enable
Interrupts ' aktifkan semua interup
S0
= 0
S1
= 1
Oe
= 0
Do
Cls
'***
deteksi putih
S2
= 1
S3
= 0
Frequensi
= 0
Tanda1detik
= 0
Tcnt1l
= Low(inisial)
Tcnt1h
= High(inisial)
Enable
Timer1
Do
Bitwait
Outhz , Set
Bitwait
Outhz , Reset
Loop
Until Tanda1detik = 1
Disable
Timer1 ' aktifkan
timer enable Ovf0
'***
deteksi putih
S2
= 1
S3
= 0
Frequensi
= 0
Tanda1detik
= 0
Tcnt1l
= Low(inisial)
Tcnt1h
= High(inisial)
Enable
Timer1
Do
Bitwait
Outhz , Set
Bitwait
Outhz , Reset
Frequensi
= Frequensi + 1
Loop
Until Tanda1detik = 1
Disable
Timer1 ' aktifkan timer enable Ovf0
Fputih
= Frequensi
'***
deteksi merah
S2
= 0
S3
= 0
Frequensi
= 0
Tanda1detik
= 0
Tcnt1l
= Low(inisial)
Tcnt1h
= High(inisial)
Enable
Timer1
Do
Bitwait
Outhz , Set
Bitwait
Outhz , Reset
Frequensi
= Frequensi + 1
Loop
Until Tanda1detik = 1
Disable
Timer1 ' aktifkan timer enable Ovf0
Fmerah
= Frequensi
'***
deteksi biru
S2
= 0
S3
= 1
Frequensi
= 0
Tanda1detik
= 0
Tcnt1l
= Low(inisial)
Tcnt1h
= High(inisial)
Enable
Timer1
Do
Bitwait
Outhz , Set
Bitwait
Outhz , Reset
Frequensi
= Frequensi + 1
Loop
Until Tanda1detik = 1
Disable
Timer1 ' aktifkan timer enable Ovf0
Fbiru
= Frequensi
'***
deteksi hijau
S2
= 1
S3
= 1
Frequensi
= 0
Tanda1detik
= 0
Tcnt1l
= Low(inisial)
Tcnt1h
= High(inisial)
Enable
Timer1
Do
Bitwait
Outhz , Set
Bitwait
Outhz , Reset
Frequensi
= Frequensi + 1
Loop
Until Tanda1detik = 1
Disable
Timer1 ' aktifkan timer enable Ovf0
Fhijau
= Frequensi
'Lcd
" R B G W "
Locate
2 , 1
Lcd
Fmerah ; " "
Locate
2 , 5
Lcd
Fbiru ; " "
Locate
2 , 9
Lcd
Fhijau ; " "
Locate
2 , 13
Lcd
Fputih ; " "
Locate
1 , 1
'***
Pengujian Bandingkan warna kuning
If
Fmerah > 551 And Fmerah < 630 Then
If
Fbiru > 221 And Fbiru < 300 Then
If
Fhijau > 351 And Fhijau < 450 Then
Lcd
"Warna kuning"
End
If
End
If
End
If
If
Fmerah > 201 And Fmerah < 320 Then
If
Fbiru > 161 And Fbiru < 220 Then
If
Fhijau > 251 And Fhijau < 295 Then
Lcd
"Warna hijau"
End
If
End
If
End
If
If
Fmerah > 350 And Fmerah < 449 Then
If
Fbiru > 100 And Fbiru < 160 Then
If
Fhijau > 90 And Fhijau < 150 Then
Lcd
"Warna merah"
End
If
End
If
End
If
If
Fmerah > 750 And Fmerah < 850 Then
If
Fbiru > 380 And Fbiru < 459 Then
If
Fhijau > 200 And Fhijau < 250 Then
Lcd
"Warna Pink"
End
If
End
If
End
If
If
Fmerah > 150 And Fmerah < 200 Then
If
Fbiru > 460 And Fbiru < 550 Then
If
Fhijau > 296 And Fhijau < 350 Then
Lcd
"Warna biru"
End
If
End
If
End
If
If
Fmerah > 40 And Fmerah < 80 Then
If
Fbiru > 40 And Fbiru < 80 Then
If
Fhijau > 30 And Fhijau < 80 Then
Lcd
"Warna hitam"
End
If
End
If
End
If
If
Fmerah > 450 And Fmerah < 550 Then
If
Fbiru > 650 And Fbiru < 730 Then
If
Fhijau > 451 And Fhijau < 550 Then
Lcd
"Warna putih"
End
If
End
If
End
If
Wait
1
Loop
Timer1_isr: ' untuk 1 kali interupsi/detik
Tcnt1l
= Low(inisial) ' inisialisasi
spt ini
Tcnt1h
= High(inisial)
Tanda1detik
= 1
Toggle
Portc.0
Return
End
VIDEO HASILNYA
No comments:
Post a Comment