Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:drtranca:detector_de_culoare [2023/05/27 21:52]
maria.druga [Introducere]
pm:prj2023:drtranca:detector_de_culoare [2023/05/27 23:28] (current)
maria.druga [Bibliografie/Resurse]
Line 17: Line 17:
 Acest proiect ​ detecteaza culoarea unui obiect fara a fi nevoie sa il privesti. ​ Acest proiect ​ detecteaza culoarea unui obiect fara a fi nevoie sa il privesti. ​
 Când se plaseaza o foaie colorată în fața senzorului, acesta detectează culoarea ​ Când se plaseaza o foaie colorată în fața senzorului, acesta detectează culoarea ​
-și o afișează pe ecranul LCD 16×2.+și o afișează pe ecranul LCD 16×2, pe ecranul PC-ului apare un mesaj sugestiv si  
 +se aprinde beculetul cu culoarea detectata.
 Flow-ul programului va fi urmatorul: Flow-ul programului va fi urmatorul:
 +  * Se apasa butonul de start
   * Utilizatorul plaseaza o foita colorata pentru detectare   * Utilizatorul plaseaza o foita colorata pentru detectare
-  * Timer-ul incepe sa functioneze pentru a permite procesarea, iar un mesaj de asteptare impreuna cu timpul este afisat +  * Timer-ul incepe sa functioneze pentru a permite procesarea 
-  * Culoarea este apoi indicata atat printr-un led, cat si printr-un mesaj sugestiv afisat pe ecranul PC-ului +  * Culoarea este apoi indicata atat printr-un led, cat si printr-un mesaj sugestiv afisat pe ecranul PC-ului ​si pe ecran I2C 
- +{{:​pm:​prj2023:​drtranca:​mariadruga1.png?​200|}} 
- +{{:pm:​prj2023:​drtranca:​keep3.png?200|}}
-{{ pm:​prj2023:​drtranca:​diagrama.png?600|}}+
 </​note>​ </​note>​
  
Line 30: Line 31:
  
 <note tip> <note tip>
-{{ pm:​prj2023:​drtranca:​4.jpg?​300|}} 
-{{ pm:​prj2023:​drtranca:​5.jpg?​200|}} 
 Piese necesare: Piese necesare:
 Arduino Uno Arduino Uno
-  * 16*2 LCD I2C +  * LCD I2C 1602 
-  * TCS-3200 Senzor de culoare +  * TCS-230 Senzor de culoare 
-  * Rezistor +  * Placa de dezvoltare UNO R3 Arduino compatibil ATmega328p 
-  * Arduino+  * Rezistente 
 +  * BreadBoard 
 +  * Fire Tata-Tata, Tata-Mama 
 +  * Buton
   * Foite colorate   * Foite colorate
   * LED   * LED
 +
 +{{:​pm:​prj2023:​drtranca:​20230526_200332.jpg?​200|}}
 +{{:​pm:​prj2023:​drtranca:​20230526_200154.jpg?​200|}}
 </​note>​ </​note>​
  
Line 47: Line 52:
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei ​(firmware): +Programul folosește bibliotecile Wire și LiquidCrystal_I2C pentru a comunica cu ecranul LCD prin intermediul protocolului I2C. 
-  * mediu de dezvoltare ​(if any) (e.gAVR Studio, CodeVisionAVR+ 
-  * librării şi surse 3rd-party (e.gProcyon AVRlib+Structurile si functiile folosite sunt: 
-  * algoritmi şi structuri pe care plănuiţsă le implementaţi + 
-  * (etapa 3surse şfuncţii implementate+**Structuri:​** 
 + 
 +- Enum `State`: folosit pentru a defini două stări posibile ale programului,​ WAITING și DETECTING. 
 +- Obiectul `LiquidCrystal_I2C`:​ utilizat pentru a controla ecranul LCD. 
 + 
 +**Functii:​** 
 + 
 +- `setup()`Funcția de setup care este apelată o singură dată când programul începe. Aici sunt inițializate pinurile și sunt stabilite anumite setări. 
 +- `loop()`: Această funcție este inima programului. Ea se execută repetitiv atâta timp cât placa Arduino este alimentată. Conține o structură switch care modifică comportamentul programului în funcție ​de starea actuală ​(WAITING sau DETECTING)
 + 
 +Alte funcții utilizate sunt:  
 + 
 +- `digitalWrite()`: Aceasta este o funcție Arduino care stabilește starea unui pin digital la HIGH sau LOW. 
 +- `digitalRead()`:​ Aceasta este o altă funcție Arduino care citește starea unui pin digital. 
 +- `pulseIn()`: Aceasta este o funcție Arduino care măsoară durata unui puls pe un pin digital. 
 +- `millis()`: Aceasta este o funcție Arduino care returnează numărul de milisecunde de când placa a început să ruleze programul curent. 
 +`delay()`: Aceasta este o funcție Arduino care oprește execuția programului pentru un anumit număr de milisecunde. 
 +- Funcții de control al LCD-ului (print, setCursor, clear, etc.). 
 + 
 +Acest program așteaptă apăsarea unui buton pentru a începe detectarea culorilor. Detectează culoarea unui obiect șapoi afișează culoarea pe un ecran LCD șaprinde un LED corespunzător ​(roșu, verde sau albastru). În cazul în care butonul este apăsat din nou în timpul detectării,​ programul se întoarce în starea de așteptare șoprește toate LED-urile.
 </​note>​ </​note>​
  
Line 57: Line 81:
  
 <note tip> <note tip>
-Care au fost rezultatele ​obţinute ​în urma realizării proiectului vostru.+Rezultatele se obțin prin utilizarea unui senzor de culoare care funcționează cu trei fotodiodi filtrate pentru roșu, verde și albastru. Senzorul emite frecvențe diferite pentru culorile detectate.  
 + 
 +Pentru a citi aceste frecvențe, programul setează pinii S2 și S3 ai senzorului la diferite valori, ​în funcție de culoarea pe care dorește să o citească.  
 + 
 +Pentru a citi roșu, programul setează S2 și S3 la LOW. Pentru a citi verde, S2 și S3 sunt setate la HIGH. Pentru albastru, S2 este setat la LOW și S3 la HIGH.  
 + 
 +Odată ce pinii sunt setați corespunzător,​ programul utilizează funcția `pulseIn()` pentru a citi frecvența de ieșire de la senzor.  
 + 
 +Frecvențele roșu, verde și albastru sunt comparate pentru a determina care este cea mai mică. Dacă frecvența roșie este cea mai mică, se consideră că obiectul este roșu. Similar, dacă frecvența verde sau albastră este cea mai mică, se consideră că obiectul este verde sau albastru.  
 +Rezultatul acestei detecții este apoi afișat pe un ecran LCD și transmis prin portul serial pentru a fi citit de un alt dispozitiv. De asemenea, LED-ul corespunzător culorii detectate este aprins.  
 +Dacă butonul este apăsat din nou în timpul detectării, programul se întoarce în starea de așteptare și oprește toate LED-urile. 
 +{{:​pm:​prj2023:​drtranca:​keep1.jpg?200|}}
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
 +Proiectul exemplifică utilizarea senzorilor de culoare și a plăcilor Arduino pentru a crea un dispozitiv simplu de detectare a culorilor. Rezultatele sunt afișate într-un mod interactiv și instructiv, prin utilizarea unui ecran LCD și a unor LED-uri colorate.
  
 +Utilizarea protocolului I2C pentru a comunica cu ecranul LCD este un exemplu de comunicare serială între placa Arduino și alte componente hardware. I2C este un protocol de comunicare popular datorită flexibilității și eficienței sale.
 +
 +În concluzie, acest cod exemplifică multe dintre principiile și tehnicile utilizate în programarea plăcilor Arduino și a dispozitivelor electronice. Deși aparent simplu, el demonstrează eficient cum se pot utiliza senzorii și alte componente pentru a crea dispozitive interactiv și util în viața de zi cu zi.
 ===== Download ===== ===== Download =====
  
 <note warning> <note warning>
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +{{:pm:prj2023:drtranca:arhivapm.zip|}}
- +
-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**.+
 </​note>​ </​note>​
  
-===== Jurnal ===== 
- 
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
 <​note>​ <​note>​
-Listă cu documente, ​datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+Resurse: 
 + 
 +1. Documentație Arduino: 
 +  - Website-ul oficial Arduino: https://​www.arduino.cc/​ 
 +  - Ghidul de referință Arduino: https://​www.arduino.cc/​reference/​en/​ 
 + 
 +2. Senzor de culoare TCS230: 
 +   - Fișa tehnică a senzorului TCS230: https://​www.mouser.com/​datasheet/​2/​588/​TCS230_E11-1225542.pdf 
 +   - Tutorial pentru senzorul de culoare TCS230: https://​create.arduino.cc/​projecthub/​jameeltronics/​color-detection-using-tcs230-tcs3200-color-sensor-and-arduino-b1e0cd 
 + 
 +3. LCD I2C: 
 +   - Biblioteca LiquidCrystal_I2C pentru Arduino: https://​www.arduinolibraries.info/​libraries/​liquid-crystal-i2-c 
 +   - Tutorial pentru utilizarea unui LCD I2C cu Arduino: https://​dronebotworkshop.com/​i2c-lcd-display/​ 
 + 
 </​note>​ </​note>​
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2023/drtranca/detector_de_culoare.1685213564.txt.gz · Last modified: 2023/05/27 21:52 by maria.druga
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