Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul reprezinta implementarea unui calculator de buzunar ce poate fi folosit oriunde si contine cele patru operatii aritmetice de baza: +, -, *, /. Proiectul meu poate fi usor extins prin adaugarea a oricate butoane ce pot realiza functii mai complicate, de exemplu cele trigonometrice. Acest lucru se poate face prin adaugarea altei tastaturi sau a altor butoane ce vor indeplini functiile dorite.
La inceput calculatorul se va afla in starea OFF si dupa ce va fi apasat butonul ON acesta va porni. Apoi se vor introduce operanzii, pe rand, separati de operator si apoi se va efectua calcului si se va afisa pe ecran rezultatul.
De asemenea, se pot introduce usor taste ce reprezinta parateze, pentru a specifica ordinea dorita a efectuarii operatiilor daca dorim ca acestea sa se faca nu in functie de prioritate.
Etapa 1:
- Microcontroller ATmega324PA
- Tastatura cu butoane
- Fire de legatura
Conform cu datasheetul tastaturii, un buton este identifica printr-o linie si printr-o coloana. Am legat tastatura astfel de pinii microcontrolerului:
COL 1 | COL 2 | COL 3 | COL 4 | ROW 1 | ROW 2 | ROW 3 | ROW 4
PA 0 | PA 1 | PA 2 | PD 5 | PA 3 | PA 4 | PA 5 | PA 6
Am pornit cu codul de la laboratorul 3 cu ajutorul caruia am incercat sa afisez pe ecran rezultatul calculului. Inputul este reprezentat de apasarea unei combinatii de taste astfel incat sa se formeze o operatie aritmetica si apoi vom avea afisarea rezultatului. In functie de operator, programul calculeaza operatia ceruta.
Prima data se determina daca statusul este ON, adica daca a fost pornit calculatorul. Apoi, determin in functie de tasta apasata de utilizator simbolul ce va fi folosit, daca este cifra sau operator. Apoi in functie de prioritatea operanzilor efectuez calculul si afisez rezultatul. Pentru afisarea acestuia formez un string: prima data pun semnul, in cazul in care rezultatul este negativ. Apoi pun in string partea intreaga a calcului, apoi simbolul ”.” si apoi partea fractionara. Astfel obtin un singur string pe care il afisez. Cand incep un nou calcul asigur o initializare a structurilor de date in care imi tin variabilele pentru a nu afisa rezultate ramase din operatiile anterioare, sau pentru a nu efectua alte operatii.
De asemenea, trebuie tratate anumite probleme ce pot aparea la introducerea eronata a unei operatii, de exemplu impartirea la zero, caz in care trebuie sa afiseze eroare si sa permita introducerea unui nou calcul. Odata cu adaugarea posibilitatii calculului unor functii mai complexe, apar mai multe restrictii ce trebuie verificate, cum ar fi afisarea unui mesaj de eroare in cazul in care utilizatorul doreste calcularea lui tg(PI/2). Se va introduce si o eroare de precizie, prin aproximarea cu un numar finit de zecimale ale lui PI.
Datorita unor erori hardware nu am reusit sa afisez pe ecran rezultatul dorit. De asemenea, proiectul ar putea fi imbunatatit prin adaugarea mai multor butoane care sa calculeze diferite functii. Proiectul mi se pare extrem de util, deoarece un calculator de buzunar poate fi folosit atat ca si calculator stiintific, cat si ca unul simplu, cu operatii de baza.
Desi este un proiect cu partea hardware simpla, adica doar conectarea unei tastaturi de butoane la microcontroller, partea software intampina pe parcurs numeroase probleme, care pot fi rezolvate destul de usor avanand in fata cele doua datasheeturi, cel al microcontrollerului ATmega324PA si cel al tastaturii. De asemenea, o buna gestionare a structurilor de date poate simplifica si poate duce la evitarea erorilor. O alta varianta ar fi reprezentat afisarea pe LCD al rezultatului si al operanzilor pe parcurs. Pentru aceasta ar mai fi trebuit sa adaug un LCD si sa am grija sa-l leg corect de pinii microcontrolerului.
Datasheet ATmega324PA : http://www.atmel.com/Images/doc8152.pdf
Datasheet KB1604-PNB : http://www.datasheetarchive.com/KB1604-PNB-datasheet.html