Dalam tutorial ini kita akan menghubungkan modul joystick dengan mikrokontroler atmega8. A JOY STICK adalah modul input yang digunakan untuk komunikasi. Ini pada dasarnya memudahkan komunikasi mesin pengguna. Joystick ditunjukkan dalam gambar di bawah.
Modul kayu bedik mempunyai dua paksi - satu mendatar dan yang lain adalah menegak. Setiap paksi kayu bedik dipasang ke potensiometer atau periuk atau rintangan berubah. Mata pertengahan diturunkan sebagai Rx dan Ry. Pin ini dibawa sebagai pin isyarat output untuk JOYSTICK. Apabila tongkat digerakkan di sepanjang paksi mendatar, dengan voltan bekalan yang ada, voltan pada pin Rx berubah.
Voltan pada Rx meningkat apabila digerakkan ke depan, voltan pada pin Rx menurun apabila bergerak ke belakang. Begitu juga, voltan pada Ry meningkat ketika digerakkan ke atas, voltan di pin Ry menurun ketika digerakkan ke bawah.
Oleh itu, kami mempunyai empat arah JOYSTICK pada dua saluran ADC. Pada kes biasa, kita mempunyai 1Volt pada setiap pin dalam keadaan normal. Semasa batang digerakkan voltan pada setiap pin naik tinggi atau rendah bergantung pada arah. Jadi empat arah sebagai (0V, 5V pada saluran 0) untuk paksi x; (0V, 5V pada saluran 1) untuk paksi-y.
Kami akan menggunakan dua saluran ADC ATMEGA8 untuk menjalankan tugas. Kami akan menggunakan saluran 0 dan saluran 1.
Komponen Diperlukan
Perkakasan: ATMEGA8, bekalan kuasa (5v), AVR-ISP PROGRAMMER, LED (4 buah), kapasitor 1000uF, kapasitor 100nF (5 keping), perintang 1KΩ (6 keping).
Perisian: Atmel studio 6.1, progisp atau flash magic.
Diagram Litar dan Penjelasan Kerja
Voltan merentasi JOYSTICK tidak linear sepenuhnya; ia akan menjadi bising. Untuk menyaring kebisingan, kapasitor ditempatkan di setiap perintang dalam litar seperti yang ditunjukkan pada gambar
Seperti yang ditunjukkan dalam gambar terdapat empat LED di litar. Setiap LED mewakili setiap arah JOYSTICK. Apabila tongkat digerakkan ke arah, maka LED yang sesuai menyala.
Sebelum melangkah lebih jauh, kita perlu membincangkan ADC ATMEGA8, Di ATMEGA8, kita dapat memberikan input Analog ke mana-mana EMPAT saluran PORTC, tidak kira saluran mana yang kita pilih kerana semuanya sama, kita akan memilih saluran 0 atau PIN0 PORTC.
Di ATMEGA8, ADC mempunyai resolusi 10 bit, jadi pengawal dapat mengesan perubahan minimum Vref / 2 ^ 10, jadi jika voltan rujukan adalah 5V, kita mendapat kenaikan output digital untuk setiap 5/2 ^ 10 = 5mV. Oleh itu, untuk setiap kenaikan 5mV input, kita akan mendapat kenaikan satu pada output digital.
Sekarang kita perlu menetapkan daftar ADC berdasarkan syarat berikut, 1. Pertama sekali kita perlu mengaktifkan ciri ADC di ADC.
2. Berikut akan mendapat voltan input maksimum untuk penukaran ADC ialah + 5V. Oleh itu, kita boleh menetapkan nilai maksimum atau rujukan ADC hingga 5V.
3. Pengawal mempunyai ciri penukaran pemicu yang bermaksud penukaran ADC hanya berlaku setelah pemicu luaran, kerana kita tidak mahu bahawa kita perlu menetapkan daftar agar ADC dapat dijalankan dalam mod berjalan bebas berterusan.
4. Untuk mana-mana ADC, kekerapan penukaran (Nilai analog ke nilai Digital) dan ketepatan output digital berkadar songsang. Oleh itu, untuk ketepatan output digital yang lebih baik, kita harus memilih frekuensi yang lebih rendah. Untuk jam ADC biasa, kita menetapkan prale penjualan ADC ke nilai maksimum (2) Oleh kerana kita menggunakan jam dalaman 1MHZ, jam ADC akan menjadi (1000000/2).
Ini adalah satu-satunya empat perkara yang perlu kita ketahui untuk memulakan ADC.
Keempat ciri di atas ditetapkan oleh dua daftar:
MERAH (ADEN): Bit ini harus ditetapkan untuk mengaktifkan ciri ADC ATMEGA.
BLUE (REFS1, REFS0): Kedua-dua bit ini digunakan untuk menetapkan voltan rujukan (atau voltan masukan maksimum yang akan kita berikan). Oleh kerana kita ingin mempunyai voltan rujukan 5V, REFS0 harus ditetapkan, mengikut jadual.
KUNING (ADFR): Bit ini mesti ditetapkan agar ADC dapat dijalankan secara berterusan (mod berjalan bebas).
PINK (MUX0-MUX3): Keempat bit ini adalah untuk memberitahu saluran input. Oleh kerana kita akan menggunakan ADC0 atau PIN0, kita tidak perlu menetapkan bit seperti pada jadual.
BROWN (ADPS0-ADPS2): ketiga-tiga bit ini adalah untuk menetapkan preskalar untuk ADC. Oleh kerana kita menggunakan prescalar 2, kita harus menetapkan satu bit.
DARK GREEN (ADSC): bit ini ditetapkan untuk ADC memulakan penukaran. Bit ini boleh dilumpuhkan dalam program apabila kita perlu menghentikan penukaran.