Table of Contents

GravitySlide

Proiectul presupune realizarea unui display din matrici led 32×32 prin intermediul caruia vom oferi utilizatorului un mod interactiva de a interactiona cu obiectele ce sunt afisate pe ecran influentate de unghiul de inclinare. Obiectele/ formele prezentate pot fi alese de utilizator prin intermediul unui aplicatii mobile. Jocul poate fi un mijloc de relaxare atat pentru adulti cat si pentru cei mici.

Descriere generală

Design-ul proiectului se bazeaza pe interactiunea dintre placuta principala Arduino UNO ce se conecteaza cu 2 vectori de 2 matrici ce vor insuma un patrat cu latura de 32 de leduri (2^5 leds) conectate initial in serie 2 cate 2, dar care vor fi tratate ca un grid cu diviziunea de 1 led. Un senzor cu modul de acceleratie si giroscop, ce ne va oferi constant date prin care vom afla unghiul de inclinare pe Ox si Oy, dupa care vom simula caderea.

Modulul bluetooth se va folosi pentru a primi comenzi de la user printr-o aplicatie pentru a varia elementele afisate.

Hardware Design

Elemente hardware folosite:

schema_electrica_brezni.jpg

In practica matricele sunt lipite patru cate patru, rezultand 4 vectori de leduri paraleli.

Software Design

Medii de dezvoltare

Blioteci

Cod Pentru a intelege ce a dus la forma software ului, trebuie prezentate cateva probleme aparute:

row_column_brezni.jpg

Codul a fost impartit in functii pentru modularizare, apelul lor bazanduse pe cele doua apeluri de setup si loop. Formele generate sunt pe un set de leduri de 8×8. Aceasta structura este un bitfield de dimensiune de 1 byte in care am retinut ce led trebuie aprins si stins.

Programul este initializat cu un X cu un contor al matricei, dupa care i-a nastere minijocul nostru. Fiecare led isi schimba intensitatea intre 0 si 16. x_matrix.jpg

Functii

Documentatia pentru cele doua librari utilizate poate fi gasita pe site-ul oficial, cu o multime de exemple, modele grafice, imagini, cod sursa, API-uri si multe alte informatii pentru o mai buna intelegere a modului de lucru si a potentialului pe care il are proiectul.

Protocoalele de comunicatie utilizate: I2C, SPI, UART. Pentru o buna intelegere, utilizati laboratoarele de PM.

Calcul unghiuri de inclinatie

Valorile se afla intre -90 si +90 de grade inclinatie. Pe baza acestora si a unui thrashhold de 15-30, are loc deplasarea elementelor.

Rezultate Obţinute

Concluzii

Lipsa unei biblioteci, mareste substantial volumul de munca al unui programator, dar si imposibilitatea modificarii uneia este un proces tot la fel de anevoios. Proiectul poate si merita imbunatatiri multiple, motiv pentru care vreau continui cu el. Daca mi-a placut ce am facut ? Cu siguranta, am dobandit cunostinte foarte utile, am realizat si un proiect, ce PRINDE VIATA :). Este foarte util sa lucrezi si sa intelegi ce presupune un hardware, limitat, o memorie mica, mult prea mica ( inial am si umplut-o in primele zile - uhh… ). Codul a trebuit sa sufere multe imbunatatiri si sa respecte conditii peste conditii si ma bucur ca le-am avut, te fac sa te adaptezi si sa cauti solutii.

Download

Check the repo

Bibliografie/Resurse

Informatiile sunt multiple, dar vreau sa impartasesc cu voi cateva ce le-am gasit eu ca fiind mai esentiale.