Proiectul consta in directionarea unei masinute teleghidate cu telecomanda fara fir in functie de cum misc mana cu telecomanda fara apasarea butoanelor. In realizarea proiectului am fost inspirata de jocurile Wii, ce au devenit un fenomen tot mai raspandit printre cei mici si nu numai .
Personal recunosc ca acest joc ma fascineaza datorita intruziunii realului in lumea imaginara, fiind un joc nou de ultima generatie.
Scopul modificarilor efectuate asupra masinutei are un caracter ludic , jocul fiind o forma placuta de patrecere a timpului liber.
Deasemenea in realizarea proiectului am fost inspirata si de concursul “Freescale Race Challenge” de anul acesta.
Piesele importante pe care le-am folosit in design-ul hardware sunt:
Telecomanda masinutei era actionata mecanic initial. Pentru miscarile stanga-dreapta si fata-spate, exista 2 contacte ce se fac mecanic atunci cand utilizatorul controleaza masina. Pe placuta am 4 leduri si la fiecare se leaga cate un buton de la telecomanda.De ex, daca o inclin in fata, masina o sa mearga in fata si o sa avem un led aprins.
Mediul de dezvoltare folosit este CodeWarrior. Aceasta e intreruperea unde verifica in ce parte e inclinata telecomanda :
interrupt VectorNumber_Vrtc void Vrtc_isr(void)// {// //DisableInterrupts;// /* Update iodisk_sd internal timers */ // disk_timerproc(); // /* Light head lights according to accX */ if(accXFilt > 37000) { SET_LED_HL_OFF; } else if(accXFilt < 26000) { SET_LED_HR_OFF; } else { SET_LED_HL_ON; SET_LED_HR_ON; } ///////////////////////////////////////////////////////////////// if(accYFilt > 39000) { SET_LED_BL_OFF; } else if(accYFilt <28000) { SET_LED_BR_OFF; } else { SET_LED_BL_ON; SET_LED_BR_ON; } /* Clear the interrupt flag */ RTCSC_RTIF = 1; //EnableInterrupts; }
In main fac intializarile de ceas-uri si porturi, si interrupter:
void main(void) { RedirectInterruptVectorsToRAM(); SlotCarInit(); EnableInterrupts; while(1){ } }
Ideea generala este ca am un accelerometru analogic si citesc acceleratiile cu ADC-ul(ADC-ul e pe 12 biti). Am o intrerupere de 10ms cand verific acceleratiile; daca una din ele sau mai multe satisfac conditia din cod atunci se aprinde ledul respectiv si trimite comenzi la masinutza. Codul de la care am plecat este codul standard de la Freescale. Am modificat codul din intrerupere si am eliminat ceea ce era nefolositor.
Masinuta as putea spune ca se comporta destul de bine , deoarece reactioneaza foarte bine la miscarile fata-spate, stanga-dreapta.
Implementarea proiectului se afla aici :corina.rar
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Resursele Software si Resursele Hardware :
http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=067147695636897485831C