Differences

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

Link to this comparison view

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 ș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 ş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 Alin331CC -> **:​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 astaam aprofundat materia predata la laborator, ceea ce-mi aduce un plusLOL  
 + 
 +===== Download =====
  
 +{{:​pm:​prj2022:​cstan:​pm_patrascu_ionel_331ac.zip|}}
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2022/cstan/120.1653564300.txt.gz · Last modified: 2022/05/26 14:25 by ionel.patrascu3101
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