This shows you the differences between two versions of the page.
pm:prj2022:cstan:120 [2022/05/26 14:25] ionel.patrascu3101 [Jurnal] |
pm:prj2022:cstan:120 [2022/05/26 15:48] (current) ionel.patrascu3101 [Download] |
||
---|---|---|---|
Line 72: | 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> | + | |
+ | Pe langa asta, am aprofundat materia predata la laborator, ceea ce-mi aduce un plus. LOL | ||
+ | |||
+ | ===== Download ===== | ||
+ | {{:pm:prj2022:cstan:pm_patrascu_ionel_331ac.zip|}} | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |