O masinuta teleghidata a fost intotdeauna o sursa de bucurie si relaxare pentru cei mici si nu numai. Pornind de la aceasta idee, m-am gandint sa imbunatatesc modul in care persoana actioneaza masinuta, mergand im directia unei interactiuni om-gadget cat mai naturale: gesturi(asemenea unei console Nintendo Wii).
Scopul acestei versiuni a proiectului este pur didactic, masina neputand fi controlata in ideea unei competitii, sau cu o exactitate foarte mare.
Placuta se alimenteaza de la USB. Accelerometrul variaza tensiuni, in functie de miscarea pe OX, OY si OZ, pe pinii 2, 3, 4 ai portului A din uC. Acesta trimite semnal pe pinii 0,1,5 si 6 in functie de starea masinii catre 4 relee prin care se actioneaza butoanele de pe telecomanda initiala a masinutei.
Schema electrica accelerometru:
Schema bloc interfatare accelerometru-microcontroller
Platforma de dezvoltare:
OS: Win XP SP2 IDE: CodeVisionAVR 2.04.4a Advanced Headers: delay.h, mega16.h, mega16_bits.h, stdlib.h
Algoritm:
Pentru a implementa toate starile in care se poate gasi masina(directie + sens) la un anumit moment dat s-a folosit urmatoarea schema de codificare:
N | ||||
---|---|---|---|---|
8 | 7 | 6 | ||
V | 5 | 4 | 3 | E |
2 | 1 | 0 | ||
S |
4 - starea de repaus
UP - se implementeaza prin +3
DOWN - se implementeaza prin -3
LEFT - se implementeaza prin +1
RIGHT - se implementeaza prin -1
Masinuta se poate conduce prin gesturile mainii(stanga, dreapta, inainte, inapoi) cu ajutorul unui accelerometru prins in palma.
La alimentarea placii se ruleaza un test care verifica directia si tractiunea masinii in ambele directii.
Totodata prin apasarea repetata a butonului de pe placa de baza se poate simula fiecare din cele 9 stari in care se poate gasi masina (N,V,E,S,NV,NE,SE,SV,Repaus).
Ghidarea masinutei functioneaza corect dar este oarecum sensibila.
Ar fi utila o perioada de antrenament si acomodare pentru un control mai precis.
Resurse Hardware