Differences

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

Link to this comparison view

pm:prj2023:apredescu:pov_display [2023/05/07 19:28]
george.tudurean
pm:prj2023:apredescu:pov_display [2023/05/30 20:57] (current)
george.tudurean
Line 27: Line 27:
  
 {{:​pm:​prj2023:​apredescu:​pov-display-pm.png?​800|}} {{:​pm:​prj2023:​apredescu:​pov-display-pm.png?​800|}}
 +
  
  
 ===== Hardware Design ===== ===== Hardware Design =====
- 
-<note tip> 
-Aici puneţi tot ce ţine de hardware design: 
-  * listă de piese 
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) 
-  * diagrame de semnal ​ 
-  * rezultatele simulării 
-</​note>​ 
  
 Lista de piese: Lista de piese:
     * Espressif ESP32-S3-DevKitC-1-N8R8     * Espressif ESP32-S3-DevKitC-1-N8R8
-    * motor DC cu senzor efect Hall: 424-1/​19-MOTOR-KIT Digilent+    * motor DC: 424-1/​19-MOTOR-KIT Digilent
     * LED strip: Adafruit dotstar cu led-uri SK9822, 0.5m 144leds/m density     * LED strip: Adafruit dotstar cu led-uri SK9822, 0.5m 144leds/m density
     * tija de plastic pe care sa fie lipite led-urile     * tija de plastic pe care sa fie lipite led-urile
-    * sursa/​baterie pentru motor, microcontroller si LED strip 
     * level shifter 3V - 5V pentru LED strip     * level shifter 3V - 5V pentru LED strip
 +    * baterie 5V pentru microcontroller si LED strip
 +    * baterie 9V pentru motor
 +    * senzor Hall switch
  
 +Schema electrica:
 +
 +{{:​pm:​prj2023:​apredescu:​pm_schematic.png?​800|}}
 +
 +Test initial:
 +
 +{{:​pm:​prj2023:​apredescu:​test-led_strip.jpeg?​800|}}
 ===== Software Design ===== ===== Software Design =====
  
 +    * IDE folosit: VSCode + extensie pt esp32, ArduinoIDE si PlatformIO + ESP-IDF (da, mi-am pierdut mintile)
 +    * libs: Adafruit SDFormat, FatFS, PovLibrary, FastLED, WiFi (daca facea tot ce voiam eu, dar mna, am folosit doar Adafruit Dotstar pentru demo)
 +    * algoritmi si structuri: Considerand ca biblioteca Adafruit Dotstar interfateaza banda de led-uri si ca biblioteca pov interfateaza display-ul pov in sine, am folosit de metode din aceste doua biblioteci pentru a realiza proiectul (biblioteca pov e un gunoi ordinar, la fel ca toate celelalte, am facut code review la toate bibliotecile,​ crapa tot, absolut oribil :-(:-(:-(
 +    * nu am ce surse si functii sa pun, doar am pus cap la cap bibliotecile folosite -> de fapt am un gunoi pt demo:
  
-<note tip+<code
-Descrierea codului aplicaţiei ​(firmware): +#include <​Adafruit_DotStar.h>​ 
-  * mediu de dezvoltare ​(if any) (e.gAVR Studio, CodeVisionAVR+#include <​Arduino.h>​ 
-  ​* librării şi surse 3rd-party (e.gProcyon AVRlib+// Because conditional #includes don't work w/Arduino sketches... 
-  ​* algoritmi şstructuri pe care plănuiţsă le implementaţ+#include <​SPI.h>​ // COMMENT OUT THIS LINE FOR GEMMA OR TRINKET 
-  ​(etapa 3) surse şfuncţii implementate +// #include <​avr/​power.h>​ // ENABLE THIS LINE FOR GEMMA OR TRINKET 
-</note>+ 
 +#define NUMPIXELS 72 // Number of LEDs in strip 
 + 
 +// Here's how to control the LEDs from any two pins: 
 +#define TRIGGERPIN 9 
 +#define DATAPIN 10 
 +#define CLOCKPIN 11 
 +Adafruit_DotStar strip(NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BRG); 
 + 
 +int head = 0, tail = -20; // Index of first '​on'​ and '​off'​ pixels 
 +uint32_t movingColor = 0x00FFFF, color = 0xFF00FF; // purple and cyan 
 + 
 +void setup(
 +
 + 
 +#if defined(__AVR_ATtiny85__&& ​(F_CPU == 16000000L) 
 +  clock_prescale_set(clock_div_1);​ // Enable 16 MHz on Trinket 
 +#endif 
 + 
 +  Serial.begin(115200);​ // For debugging 
 +  Serial.println("​DotStar Simple"​)
 + 
 +  ​strip.begin(); // Initialize pins for output 
 +  strip.show();  // Turn all LEDs off ASAP 
 + 
 +  ​for (int = 0; < NUMPIXELS; ​i++) 
 +  ​{                                // Loop thru all pixels in strip... 
 +    strip.setPixelColor(i, color); //  Set pixel'​s color (in RAM) 
 +  } 
 + 
 +  strip.setBrightness(255);​ // Max brightness 
 +  strip.show();​ //  Update strip to match 
 +
 + 
 +bool direction = true; 
 +int trigger = HIGH; 
 +int lastTrigger = HIGH; 
 +void loop() 
 +
 +  lastTrigger = digitalRead(TRIGGERPIN);​ 
 + 
 +  strip.setPixelColor(head,​ movingColor);​ 
 +  strip.setPixelColor(tail,​ color); 
 + 
 +  // move a "​snake"​ of pixels along the strip up to the middle 
 +  if (trigger == HIGH && lastTrigger == LOW) 
 +  { 
 +    if (++head >= NUMPIXELS) 
 +    { 
 +      head = 0; 
 +    } 
 +    if (++tail >= NUMPIXELS) 
 +    { 
 +      tail = 0; 
 +    } 
 +    strip.setPixelColor(head,​ movingColor);​ 
 +    strip.setPixelColor(tail,​ color); 
 +    { 
 +      if (direction) 
 +      { // going to the edge 
 +        if (tail >= 0) 
 +        { 
 +          strip.setPixelColor(tail,​ color); 
 +        } 
 +        strip.setPixelColor(head,​ movingColor);​ 
 +        if (++head > NUMPIXELS / 2 - 1) 
 +        { 
 +          direction = false; 
 +          --head; 
 +        } 
 +        else 
 +        { 
 +          ++tail; 
 +        } 
 +      } 
 +      else 
 +      { // going to the middle 
 +        strip.setPixelColor(head,​ color); 
 +        strip.setPixelColor(tail,​ movingColor);​ 
 +        if (--tail < 0) 
 +        { 
 +          direction = true; 
 +          ++tail; 
 +        } 
 +        else 
 +        { 
 +          --head; 
 +        } 
 +      } 
 +    } 
 + 
 +    trigger = lastTrigger;​ // update trigger 
 + 
 +    strip.show();​ // Update strip with new contents 
 +  } 
 +} 
 +</code>
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Nu se vede chiar bine in poza dar se observa efectul POV (da, poza e facuta in garaj): 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. + 
-</​note>​+{{:​pm:​prj2023:​apredescu:​gunoi_pov_tudu.jpeg?​300|}}
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Ma urasc, motiv pentru care am ales proiectul asta! :-)
 +
 +Would do it again tho (chiar am de gand sa termin tot ce imi propusesem at some point (asta daca nu dau cu proiectul de pamant de nervi))
  
 ===== Download ===== ===== Download =====
 +
 +Daca aveti ceva death wish, trebuie descarcat PlatformIO, inclusa biblioteca AdaFruit_DotStar si adaugat gunoiul ala de demo. Oh si sa aveti o ragalie de ventilator overengineered ca al meu.
 +===== Jurnal =====
 +<note important>​
 +Imi pierd mintile :-(
 +</​note>​
  
 <note warning> <note warning>
-O arhivă (sau mai multe dacă este cazul) ​cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+Imi vine sa plang dar nu pot, m-am obisnuit ​cu suferinta ​:-(:-( 
 +</​note>​
  
-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 warning>​ 
 +Am halucinatii dupa 2 zile nedormite :-(:-(:-(
 </​note>​ </​note>​
- 
-===== Jurnal ===== 
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.+A fost dragut la prezentare :-)
 </​note>​ </​note>​
- 
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +    * proiecte de pe hackster (ceva lucrare la master a unora) 
-Listă cu documentedatasheet-uriresurse Internet folositeeventual grupate ​pe **Resurse Software** şi **Resurse Hardware**. +    * un chinez tare priceput la electronica de pe youtube 
-</​note>​+    * oameni random care au facut chestii de genul pe youtube 
 +    * documentatia esp32 de la espressifabsolut oribil, daca nu o citesti ca pe o carte nu intelegi de ce la pagina 200000000 referentiaza setup-ul de pe prima paginasper sa devin un inginer la fel de prost la a scrie documentatiesa sufere si altii din cauza mea 
 +    * issue-uri de pe github-ul bibliotecilor (raspundeau creatorii lib-urilor si recunosteau cat de oribile sunt scrise, efectiv am gasit pull request-uri care rezolvau o singura linie, fara side-effects,​ efectiv nemerge-uite;​ cea mai trista experienta vreodata 
 +    ​forumuri cu oameni care am realizat dupa ce am citit thread-urile ca nu au nicio idee despre ce vorbescEfectiv embedded atrage cei mai big brained megamind oameni si in acelasi timp si pe cei mai delusional oameni din lumea asta
  
 <​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/apredescu/pov_display.1683476899.txt.gz · Last modified: 2023/05/07 19:28 by george.tudurean
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