Introducere

Proiectul meu vrea sa implementeze jocul de snake pe un ecran de nokia 3310 folosing micro-controllerul atmega 16. Regulile jocului:

  • jucatorul porneste cu un sarpe de 7 blocuri
  • spatiul de joc este inchis de un patrat cu latura de 20 de blocuri(spatiu ales astfel incat reprezentarea sarpelui in program sa incapa in memoria uC)
  • Mancarea este reprezentata de un bloc ce nu face parte din corupul sarpelui
  • Mancarea este generata aleator in spatiul de joc, dar sa nu se suprapuna pe corpul sarpelui
  • Atunci cand sarpele atinge cu capul, blocul de mancare sarpele creste in dimensiune cand coada sarpelui se suprapune peste blocul de mancare.
  • Butoanele sus jos, stanga, dreapta vor avea rolul de a seta directia sarpelui, iar butonul al 5-lea va avea rolul de enter/select.

Hardware Design

Intentionez sa leg uC la un ecran de Nokia 3310 si la 5 butoane, dupa cum se observa in schema de mai jos.

Componente:

  • placuta realizata la etapa 1
  • 5 butoane
  • ecran LCD
  • divizor de tensiune pentru a transforma din 5V in 3.3V (de la cat are placuta la cat suporta ecranul LCD Nokia 3310)
  • photoaz.jpg
  • photo1te.jpg
  • photo5pv.jpg

Software Design

Intentionam sa folosesc un api de Nokia 3310, care are urmatoarele functii:

 void LCD_init ( void );
 void LCD_clear ( void );
 void LCD_update ( void );
 void LCD_gotoXY ( unsigned char x, unsigned char y );
 void LCD_writeChar ( unsigned char character );
 void LCD_writeChar_megaFont ( unsigned char character );
 void LCD_writeData ( unsigned char data );
 void LCD_writeCommand ( unsigned char command );
 void LCD_writeString_megaFont ( char *string );
 void LCD_writeString_F ( const char *string);
 void LCD_setPixel ( unsigned char x, unsigned char y);
 void LCD_clearPixel ( unsigned char x, unsigned char y);
 void LCD_drawLine ( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2 );
 void LCD_drawBorder (void );
 void LCD_drawSplash (void );
 void delay_ms ( int millisec );
 void spi_init(void);

Sarpele in sine este defapt o lista simplu inlantuita:

 typdef struct Sarpe
 {
     char x;
     char y;
     char directie;
     struct Sarpe *next;
 }sarpe;
 X, y reprezinta coordonate, directie reprezinta cum ar trebui mutat sarpele,iar *next este un pointer la urmatoarul bloc al sarpelui.
 Pentru a scuti uC de calcule inutile, la miscarea sarpelui, se va misca doar coada si capul.
 Am folosit char in loc de int pentru a economisi memorie.

Rezultate Obtinute

Din pacate nu am putut ajunge la niste rezultate concrete, din cauza problemelor de hardware

Concluzii

Partea de hardware mi s-a parut extrem de dificila, poate si din cauza faptului ca am reusit sa cumpar 2 lcd-uri de nokia 3310 stricate.

Din aceasta cauza m-am dat batut si nu am mai incercat si cu al 3-lea.

Ar fi fost interesant sa reusesc montez toate componentele pe placuta sa vad cum se comporta snake-ul. Sper ca in urmatoarea luna chiar sa reusesc acest lucru.

Download

Jurnal

Jurnal:

*Am resuit sa cumpar si sa montez toate componentele pentru placuta.

*Am reusit sa lipesc placuta si sa instalez bootloader-ul pe ea.

*Am reusit sa lipesc ecranul

*Am reusit sa conectez ecranul la placuta

Bibliografie/Resurse

pm/prj2011/ascurei/snake_mihaibanu.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0