Data sensor garis yang akan dibaca pada PORT ADC yaitu PORTA.0 hingga PORTA.7 akan bernilai antara 0 - 255 (ADC 8 bit) setiap PIN-nya dan belum bernilai logika 1 ataupun logika 0, padahal data yang dibutuhkan untuk mengolah nilai sensor garis nantinya adalah logika 0 / 1 setiap PIN-nya. Oleh sebab itu dibutuhkan fungsi yang akan mengubah nilai 0 - 255 menjadi logika 1 atau logika 0.
Salah satu caranya yaitu dengan menentukan nilai tengah (Sensor Garis ADC : Nilai Tengah Sensor Garis) antara nilai ADC untuk gelap (garis hitam) dengan nilai ADC untuk terang (garis putih), Misalkan saat gelap nilai ADC PORTA.0 = 230 sedangkan saat terang nilai ADC PORTA.0 = 80 maka nilai tengahnya yaitu (230 + 80) / 2 = 155, Artinya jika nilai ADC pada PORTA.0 di bawah 155 (ADC(0) kurang dari 155) maka berlogika 1 (putih = 1) sedangkan jika nilai ADC pada PORTA.0 diatas sama dengan 155 maka berlogika 0 (hitam = 0).
Berikut potongan program Konversi nilai ADC menjadi Logika 1 / 0 yaitu mambaca data pada PORTA dan menampilkan logikanya pada PORTB berupa LED.
- Konfigurasi CodeWizzardAVR (LCD tidak digunakan).
- Rangkaian Schematik Hardware.
Tambahan :
- Konfigurasi lihat blog sebelumnya.
- #define PORTLED PORTB mendefinisikan PORTB sebagai port rangkaian LED.
- unsigned char ram sebagai global ram yang berfungsi bebas.
Langkah program :
- Menunggu karakter input dari komputer secara serial COM.
- Jika 'A' (0x41 dalam heksa) maka proses mencari GARIS_NILAITENGAH dilakukan.
- Jika karakter selain 'A' lanjut ke proses selanjutnya.
- Membaca ADC(0) - ADC(7).
- Jika ADC(x) lebih besar dari nilai tengah maka dataport[x] = 0 (hitam = 0).
- Jika ADC(x) lebih kecil sama dengan dari nilai tengah maka dataport[x] = 1 (Putih = 1).
- Tampilkan hasil pengolahan data ADC pada LED setelah dikomplemenkan (LED rendah aktif).
mau tanya mas semisal untuk menampilkan data adc tesebut ke bentuk biner, ditampilkan ke lCD dan dikirim via UART, gmana ya??
BalasHapus