This shows you the differences between two versions of the page.
pm:prj2022:cstan:120 [2022/05/26 14:09] ionel.patrascu3101 [Schema Electrica] |
pm:prj2022:cstan:120 [2022/05/26 15:48] (current) ionel.patrascu3101 [Download] |
||
---|---|---|---|
Line 57: | Line 57: | ||
Potențiometrul este similar cu cel reostat, cu diferența că cel reostat disipează mai multă putere și este utilizat în circuitele de curent mai mare. | Potențiometrul este similar cu cel reostat, cu diferența că cel reostat disipează mai multă putere și este utilizat în circuitele de curent mai mare. | ||
+ | |||
+ | |||
+ | ---- | ||
** Componente aditionale ** | ** Componente aditionale ** | ||
* Breadboard | * Breadboard | ||
Line 69: | Line 72: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Pentru etapa de dezvoltare software, am folosit Arduino IDE singura librărie 3rd-party folosită a fost libraria NeoPixel de la Adafruit. Am folosit aceasta librarie pentru un control mai facil al benzii cu led-uri. | ||
+ | |||
+ | Codul este organizat sub forma unui FSM (Finite-state machine) cu 4 stări pe baza schemei de mai jos. Implementarea este făcută folosind case în loop. Trecerea dintr-o stare în alta, se face folosind un sistem de întreruperi configurat sa comute starea (n.r. la starea următoare) în momentul în care butonul Mode este apăsat. | ||
+ | |||
+ | Programul pornește din starea 0. Pentru a se face trecerea din starea curenta în starea următoare, este necesară apăsarea butonului Mode. În cadrul schemei, aceste legături sunt marcate cu albastru. | ||
+ | |||
+ | Atâta timp cât nu este perturbat extern, programul va continua sa execute starea în care se afla la acel moment(legăturile negre). | ||
+ | {{ :pm:prj2022:cstan:patrascu_ione:fsm-code.png?nolink&400 |}} | ||
+ | |||
+ | Din punct de vedere software, sunt foarte putine lucruri non-standard(în afara de analogRead, analogWrite, etc) implementate. Printre acestea putem numără: | ||
+ | * Folosire funcției ''map'' pentru a face "traducerea" din valorile reale date de potentiometru (0-1024) în valori potrivite pentru banda led(0-255). Un exemplu ar fi bucata următoare, extrasa din funcția mmap1: ''byte map1=map(sensorvalue, 0, 1023, 255, 0);'' | ||
+ | |||
+ | |||
+ | * Folosirea functiei ''attachInterrupt'' pentru configurarea sistemului de întreruperi: ''attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), myISR, FALLING);'' | ||
+ | |||
+ | |||
+ | * Folosirea functiilor din librăria ''Adafruit_NeoPixel.h'' pentru controlul benzii de led-uri: ''pixels.setPixelColor(i, pixels.Color(redColor,greenColor,blueColor));'' | ||
- | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | ||
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | ||
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
- | * (etapa 3) surse şi funcţii implementate | ||
- | </note> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Am reușit o implementare completa a proiectului pe care mi l-am propus și am reușit să-i implementez toate funcționalitățile. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
+ | După o analiza mai atenta, am observat ca ar fi nevoie de debouncing pe button, consider acest aspect pentru următoarea versiune de implementare. | ||
+ | |||
+ | Mai jos câteva imagini cu produsul final, împreună cu "suportul de transport". 8-) | ||
+ | |||
+ | |||
+ | |||
+ | ==== Galerie Foto ==== | ||
+ | |||
+ | |||
+ | {{ :pm:prj2022:cstan:patrascu_ione:poza1.jpeg?nolink&600 |}} | ||
+ | |||
+ | {{ :pm:prj2022:cstan:patrascu_ione:poza2.jpeg?nolink&600 |}} | ||
+ | |||
+ | {{ :pm:prj2022:cstan:patrascu_ione:poza3.jpeg?nolink&600 |}} | ||
+ | |||
+ | {{ :pm:prj2022:cstan:patrascu_ione:poza4.jpeg?nolink&600 |}} | ||
+ | |||
+ | [[https://youtu.be/-8YAICOLD_E| Video YouTube]] | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | Cred ca unele dintre cele mai importante concluzii ar fi: |
+ | * Nu arde singurul driver (FIXME) pe care îl ai cu o seara înainte de prezentare ca va fi o noapte lunga. | ||
+ | * Piesele hardware sunt ceva mai greu de obținut (comparat cu timpul pentru implementarea software). | ||
- | <note warning> | + | Acesta a fost primul meu proiect de acest gen și pot spune ca a fost interesant și mi-a plăcut foarte mult. |
- | 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ă ;-). | + | |
- | 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**. | + | Cea mai buna parte a fost faptul ca am îmbinat software cu hardware și o finalitate(in real life). |
- | </note> | + | |
- | ===== Jurnal ===== | + | Pe langa asta, am aprofundat materia predata la laborator, ceea ce-mi aduce un plus. LOL |
- | <note tip> | + | ===== Download ===== |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | {{:pm:prj2022:cstan:pm_patrascu_ionel_331ac.zip|}} |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
- | </note> | ||
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||
+ | ==== Resurse Hardware ==== | ||
+ | * [[https://www.emag.ro/placa-de-dezvoltare-compatibila-cu-arduino-uno-atmega328p-si-ch340-plusivo-46fo/pd/DT94JBMBM/|Placa de dezvoltare compatibila cu Arduino UNO (ATmega328p si CH340) Plusivo]] | ||
+ | * [[https://www.optimusdigital.ro/ro/altele/1194-microfon-electret-cu-amplificator-max9814-cu-auto-gain-control.html|Microfon Electret cu Amplificator MAX9814 cu Auto Gain Control]] | ||
+ | * [[https://www.optimusdigital.ro/ro/componente-electronice-potentiometre/1885-potentiometru-mono-50k.html?search_query=potentiometru&results=170|Potentiometru Mono 50k]] | ||
+ | * [[https://ardushop.ro/ro/electronica/331-banda-leduri-rgb-neopixels-ws2812b.html#/125-leduri_metru-60|Leduri RGB la banda (Neopixels) WS2812B]] ** * ** | ||
+ | |||
+ | ==== Resurse Software ==== | ||
+ | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab2-2022|Laboratorul 2: Întreruperi, Timere]] | ||
+ | * [[https://riptutorial.com/arduino/example/9856/interrupt-on-button-press|Interrupt on Button Press]] | ||
+ | * [[https://www.reddit.com/r/arduino/comments/8kcuhn/comment/dz73jjw/?utm_source=reddit&utm_medium=web2x&context=3|Neopixel Breathe function code help]] | ||
+ | * [[https://electropeak.com/learn/interfacing-max9814-electret-microphone-amplifier-module-with-arduino/|Interfacing MAX9814 Electret Microphone Amplifier Module with Arduino]] | ||
+ | * [[https://forum.arduino.cc/t/using-map-function-with-a-potentiometer/592722/3|Using Map function with a potentiometer]] | ||
+ | |||
+ | ** * **Resursa comuna |