This is an old revision of the document!
Nica Alexandru Claudiu 335CB
Cum functioneaza
Proiectul reprezinta implementarea unui creion colorat inteligent, de tipul Stylus Pen. Culoarea creionului este citita de un senzor de lumina, care este mai apoi afisata pe un ecran LCD I2C si de asemenea printr-un LED RGB care atunci cand se aprinde va avea culoarea respectiva. Miscarea creionului se va realiza folosind un joystick analogic ale carui coordonate vor fi mapate la un unghi cuprins intre 0 si 360 grade. Informatiile despre creion (culoarea si miscarea) vor fi transmise prin Serial catre un program Python care implementeaza biblioteca grafica Turtle. Acest program va misca obiectul de tip Turtle cu culoarea si miscarea indicata.
Scopul proiectului
Scopul proiectului este de a pune in practica notiunile capatate de-a lungul semestrului, de a invata sa fac un proiect hardware de la 0 si de a-mi dezvolta creativitatea si spiritul ingineresc
Ideea proiectului
Ideea proiectului a pornit de la faptul ca mereu am fost curios de cum functioneaza touch-screen-ul si stylus-ul. De asemenea, am vrut sa implementez un proiect care se imbina si cu alte limbaje de programare si care transmite informatii prin serial.
Utilitatea proiectului
Consider ca proiectul este important pentru mine deoarece este ceva ce m-a motivat si a pornit din curiozitate. Pentru colegii mei, consider ca poate fi un mod distractiv de a realiza notite sau de a se distra prin testarea de diferite culori si desene
Descriere functionalitate
Creionul cunoaste implicit doar un set de culori predefinite: rosu, albastru, negru, verde, galben si alb. Culoarea creionului va fi citita de detectorul de culori TCS3200, iar in cazul in care este una cunoscuta, se va afisa pe ecranul LCD I2C un mesaj cu numele acesteia. De asemenea, am adaugat un LED RGB care va lumina culoarea citita.
Odata stiuta culoarea, creionul trebuie de asemenea sa se miste, lucru care se realizeaza folosind un joystick analogic. Acesta are 2 axe: X si Y, cu ajutorul carora se poate calcula usor unghiul facut de joystick fata de centrul sau. Unghiul rezultatul reprezinta directia de desenare a creionului.
Informatiile obtinute (culoarea si orientarea) sunt retinute intr-un mesaj de tip String care este transmis prin Serial catre un program Python care extrage datele necesare si misca cursorul de ecran. Cursorul va fi miscat folosind biblioteca Turtle si se va misca respectand culoarea si orientarea.
Creionul se misca in timp real si atata timp cat utilizatorul doreste si programul este pornit
Descriere functionare senzor TCS3200
Conform foii tehnice, TCS3200 este un convertor de lumină-frecvență color programabil, care combină fotodiodele de siliciu configurabile și un convertor curent-frecvență pe un singur circuit integrat CMOS monolitic. Ieșirea este o undă pătrată (50% ciclu de funcționare) cu frecvență direct proporțională cu intensitatea luminii (iradiere). Frecvența de ieșire la scară completă poate fi scalată cu una din cele trei valori presetate (2%, 20%, 100%) prin intermediul a doi pini de intrare de control (S0 și S1). Voi seta atat S0 cat si S1 la 100% pentru o acuratete cat mai mare.
In TCS3200, convertorul lumină-frecvență citește o matrice de 8 x 8 de fotodiode: 16 fotodiode au filtre verzi, 16 rosii, 16 albastre si 16 fara filtre.
Pinii S2 și S3 sunt utilizați pentru a selecta ce grup de fotodiode (roșu, verde, albastru, fara filtru) sunt active, deci teoretic sunt folositi pentru a seta culorile ce pot fi citite. Combinatiile LOW-HIGH, definite si in datasheet-ul senzorului de culori, permit selectarea a diferite fotodiode, deci permit citirea de componente R, G, B (rosu, verde, albastru). Pentru o acuratete mai mare, pentru fiecare verificare de culoare, voi masura fiecare componenta de 10 ori, iar in final voi retine media. Analizand valorile fiecarei componente pot deduce ce culoare a fost analizata de senzorul TCS
Schema bloc
Elemente folosite
Schema Hardware
Schema Electrica
Conectare componente hardware
Senzorul TCS3200:
LCD16x2 I2C:
Joystick analogic:
RGB LED
Mediu dezvoltare
Biblioteci folosite
Descriere functii
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.