BricksGame

Introducere

  1. Scopul proiectului : portarea unui joc popular pe un uC ATMega 16
  2. interfatare simpla folsind butoane

Descriere generala

S-au folosit 3 butoane ( stanga , dreapta si lansare bila) E bine de stiut ca un lcd de nokia 3410 are rezolutie mai mare ( 96×65 ) fata de un 3310 ( 84×48). Dezvoltand in simulatar programul (de 3310) si portand pe un 3410 , vor ramane pixeli nefolositi

Hardware Design

Designul hardware pentru placuta de baza este cel de pe site Placa de extensie

   Componente folsite:
          - 2 diode 1n4007
          - 5 rezistente 3k3 
          - 5 rezistente 1k8 
          - 3 butoane 
                     - buton LAUCH conectat la PB0
                     - buton  LEFT conectat la PB1
                     - buton RIGHT conectat la PB4 
   
   Descriere interconectare 
          - dioadele sunt folosite pentru miscorarea tensiunii de intrare in lcd ( functioneaza la 3.3V) . Am obtinut aprox. 3.6V ( 5V - 0.7V - 0.7 V)  . Chiar daca aceasta tensiune e mai mare , lcd-ul functioneaza corect 
          - rezistentele sunt folosite pentru divizori de tensiune pe 5 din cele 8 porturi ale lcd-ului. Rezistentele de 3K3 fiind legate la masa , 
     rezulta un semnal de intrare 5V * 3K3  / ( 3K3 + 1K8) =~ 3.23V  , ce va indica pragul de 1 logic . 
          - atat cele 5 porturi ale lcd-ului , cat si cele 3 butoane sunt legate la PORTB al uC 
          

Software Design

  1. s-a folosit WinAvr
  2. simularea s-a realizat in ISIS Proteus
  3. incarcarea fisierului .hex pe uC s-a facut cu avrusbboot ( am intampinat probleme cu instalarea driverului de usb pe windows 7 , dar in final am reusit )

Am folosit driverul de LCD de aici http://www.quantumtorque.com/content/view/32/37/

Am modificat in lcd.h configuratia pinilor

     #define LCD_CLK_PIN 	(1<<PB7)
     #define LCD_DATA_PIN 	(1<<PB2)
     #define LCD_DC_PIN 	(1<<PB6)
     #define LCD_CE_PIN 	(1<<PB3)
     #define LCD_RST_PIN 	(1<<PB5)

Atentie! Daca se foloseste proiectul de la adresa de mai sus , trebuie avut grija sa se modifice makefile-ul acolo unde apare MCU=atmega64. Se va modifica cu tipul specific de uC .

Descriere functionalitate software

Butonul Left este folosit pentru deplasarea barei de jos . Deasemenea se mai foloseste si ca buton de deblocare din starea de busy waiting. Butonul Right este folosit tot pentru deplasarea barei de jos in dreapta. Butonul Launch permite inceperea miscarii bilutei in cadranul delimitat de joc.

Descriere algoritm Miscare bila : - Bila se poate misca dupa 4 directii . Daca notez pozitia pe axa Ox cu x si pe axa Oy cu y atunci cele 4 directii se pot defini ca

x++ , y++
x-- , y++
x++ ,  y -- 
x--,  y--

- Asadar , in toate cele 4 directii bila se va misca la 45 de grade , raportat la axa catre care se misca

- Coliziuni care pot aparea in miscarea bilei

  1. Coliziune cu peretele din stanga , cel din dreapta si cel de sus →se va modifica doar directia bilei
  2. Coliziune cu partea de jos a ecranului fara a atige bara de jos → scad numarul de vieti ramase (se initializeaza cu 3 )
  3. Coliziune cu bara → se va modifica doar directia . De asemenea , atunci cand bila este resetata si repusa pe bara de jos , in functie de pozitia barei pe ecran , biluta se va deplasa catre NV sau NE , sub un unghi de 45 de grade
  4. Coliziune cu caramizile → exista o coliziunea cu partea laterala a unei caramizi sau cu partile de jos /sus. Se schimba directia bilutei si caramida respectiva va disparea (folosind functia lcd_clear_area din API-ul de lcd)

Cod

Concluzii

Proiectul a fost realizat in intregime
O constrangere impoartanta de care m-am lovit este memeoria de doar 16K ( din care 2K sunt ocupati de bootloader ) . Am folosit -Os la compilare , am folosit acolo unde se putea reprezentare pe 1 octet ( de exemplu acolo unde nu e nevoie de un int , se foloseste unsigned char ) .
Video

Bibliografie

pm/prj2010/cvasile/bricksgame.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