U ovom uputstvu povezat ćemo modul joysticka s mikrokontrolerom atmega8. Joysticka je ulazni modul se koristi za komunikaciju. U osnovi olakšava komunikaciju korisničkog stroja. Navigacijska tipka prikazana je na donjoj slici.

Modul joysticka ima dvije osi - jedna je vodoravna, a druga okomita. Svaka os joysticka postavljena je na potenciometar ili pot ili promjenjivi otpor. Srednji bodovi srušeni su kao Rx i Ry. Ove iglice nose kao izlazne signalne iglice za JOYSTICK. Kada se štap pomiče po vodoravnoj osi, uz prisutni napon napajanja, napon na Rx pin-u se mijenja.
Napon na Rx raste kada se pomiče prema naprijed, a napon na Rx pin-u smanjuje se kada se pomiče unatrag. Slično tome, napon na Ry raste kada se pomiče prema gore, napon na Ry pinu smanjuje se kada se pomiče prema dolje.
Dakle, imamo četiri smjera JOYSTICK-a na dva ADC kanala. U normalnim slučajevima imamo 1V na svakom pinu u normalnim okolnostima. Kad se palica pomakne, napon na svakom zatiču postaje visok ili nizak, ovisno o smjeru. Dakle, četiri smjera kao (0V, 5V na kanalu 0) za x-os; (0V, 5V na kanalu 1) za os y.
Za obavljanje posla koristit ćemo dva ADC kanala ATMEGA8. Koristit ćemo kanal 0 i kanal 1.
Komponente potrebne
Hardver: ATMEGA8, napajanje (5v), AVR-ISP PROGRAMER, LED (4 komada), kondenzator 1000uF, kondenzator 100nF (5 komada), otpornik 1KΩ (6 komada).
Softver: Atmel studio 6.1, progisp ili flash magic.
Kružni dijagram i radno objašnjenje

Napon na JOYSTICK-u nije potpuno linearan; bit će bučna. Kako bi se filtrirao šum, kondenzatori su postavljeni preko svakog otpora u krugu, kao što je prikazano na slici.
Kao što je prikazano na slici, u krugu su četiri LED diode. Svaka LED lampica predstavlja svaki smjer JOYSTICK-a. Kada se palica pomiče u smjeru, tada odgovarajuća LED lampica svijetli.
Prije nego što nastavimo dalje, moramo razgovarati o ADC-u ATMEGA8, U ATMEGA8 možemo dati analogni ulaz na bilo koji od ČETIRI kanala PORTC-a, nije važno koji ćemo kanal odabrati jer su svi isti, odabrat ćemo kanal 0 ili PIN0 PORTC-a.
U ATMEGA8, ADC je 10-bitne razlučivosti, tako da regulator može otkriti osjet minimalne promjene Vref / 2 ^ 10, pa ako je referentni napon 5V, dobit ćemo digitalni priraštaj za svakih 5/2 ^ 10 = 5mV. Dakle, za svakih 5mV prirasta na ulazu imat ćemo priraštaj od jednog na digitalnom izlazu.
Sada moramo postaviti registar ADC-a na temelju sljedećih uvjeta, 1. Prije svega moramo omogućiti značajku ADC u ADC-u.
2. Ovdje ćemo dobiti maksimalni ulazni napon za ADC pretvorbu od + 5V. Tako možemo postaviti maksimalnu vrijednost ili referencu ADC-a na 5V.
3. Kontroler ima značajku pretvorbe okidača što znači da se pretvorba ADC-a odvija samo nakon vanjskog okidača, jer ne želimo da moramo postaviti registre da ADC radi u kontinuiranom slobodnom načinu rada.
4. Za bilo koji ADC, učestalost pretvorbe (analogna vrijednost u digitalnu vrijednost) i točnost digitalnog izlaza su obrnuto proporcionalne. Stoga za bolju točnost digitalnog izlaza moramo odabrati manju frekvenciju. Za normalni ADC sat postavljamo pretprodaju ADC-a na maksimalnu vrijednost (2). Budući da koristimo interni takt od 1 MHz, ADC će biti (1000000/2).
To su jedine četiri stvari koje moramo znati da bismo započeli s ADC-om.
Sve gore navedene četiri značajke postavljaju dva registra:


CRVENA (ADEN): Ovaj bit mora biti postavljen za omogućavanje ADC značajke ATMEGA-e.
PLAVO (REFS1, REFS0): Ova dva bita koriste se za postavljanje referentnog napona (ili maksimalnog ulaznog napona koji ćemo dati). Budući da želimo imati referentni napon 5V, treba postaviti tablicu REFS0.

ŽUTI (ADFR): Ovaj bit mora biti postavljen da bi se ADC neprekidno izvodio (način slobodnog rada).
PINK (MUX0-MUX3): Ova četiri bita služe za prepoznavanje ulaznog kanala. Budući da ćemo koristiti ADC0 ili PIN0, ne trebamo postavljati nikakve bitove kao u tablici.

SMEĐE (ADPS0-ADPS2): ova tri bita služe za podešavanje predskalara za ADC. Budući da koristimo pretkalar 2, moramo postaviti jedan bit.

TAMNO ZELENO (ADSC): ovaj bit postavljen za ADC da započne pretvorbu. Taj se bit može onemogućiti u programu kada moramo zaustaviti pretvorbu.
