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)

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

Nu am 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.

*M-am dat batut la lipitul ecranului din cauza problemelor tehnice aparute.

Bibliografie/Resurse

pm/prj2010/avoinescu/snake.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