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
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
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
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