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:11]
ionel.patrascu3101 [Lista Piese]
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 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
pm/prj2022/cstan/120.1653563460.txt.gz · Last modified: 2022/05/26 14:11 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