Differences

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

Link to this comparison view

pm:prj2025:atoader:alexandru.stefan03 [2025/05/20 01:10]
alexandru.stefan03 [Pini folosiți (Arduino UNO)]
pm:prj2025:atoader:alexandru.stefan03 [2025/05/28 02:06] (current)
alexandru.stefan03 [Concluzii]
Line 28: Line 28:
  
   * **Modul SD + Card SD (SPI)**  ​   * **Modul SD + Card SD (SPI)**  ​
-    - Stochează ​fișierele cu modelele de desen.+    - Stochează ​timestamp-uri pentru ​desen.
     - Arduino accesează datele prin SPI.     - Arduino accesează datele prin SPI.
  
Line 59: Line 59:
   * Driver motoare ​ ULN2003   * Driver motoare ​ ULN2003
   * 2x motoare stepper 28BYJ-48   * 2x motoare stepper 28BYJ-48
-  * Modul SD Card + card microSD ​CH376S+  * Modul SD Card + card microSD
   * LCD 1602 cu I2C   * LCD 1602 cu I2C
   * 1 buton   * 1 buton
Line 82: Line 82:
 | 2   | 2x 28BYJ-48 + 2x ULN2003 Driver ​  | Motoare pas cu pas + drivere ULN2003 ​   |            | 2   | 2x 28BYJ-48 + 2x ULN2003 Driver ​  | Motoare pas cu pas + drivere ULN2003 ​   |           
 | 3   | LCD 1602 I2C                      | Display pentru afișare moduri desen   ​| ​               | 3   | LCD 1602 I2C                      | Display pentru afișare moduri desen   ​| ​              
-| 4   ​| ​CH376S USB Module ​                | Modul citire ​fișiere ​de pe USB Flash     |            ​+| 4   ​| ​Micro SD Card Adapter ​                | Modul scriere ​fișiere pe Micro SD     |            ​
 | 5   | Buton push                        | Selectare mod desen        |                          | 5   | Buton push                        | Selectare mod desen        |                         
 | 6   | Breadboard 800 puncte ​           | Pentru conexiuni temporare ​     |                      | 6   | Breadboard 800 puncte ​           | Pentru conexiuni temporare ​     |                     
Line 97: Line 97:
 LCD-ul 1602 comunică cu Arduino prin interfață I2C și afișează modul curent de desen. LCD-ul 1602 comunică cu Arduino prin interfață I2C și afișează modul curent de desen.
  
-Modulul ​CH376S ​este conectat prin interfață SPI și citește ​fișiere `.TXT` ​de pe un SD Card drive ce conțin coordonate de mișcare.+Modulul ​SD este conectat prin interfață SPI și scrie fișiere `.TXT` pe un SD Card log-urile.
  
 Butonul permite utilizatorului să schimbe între diverse moduri de desen. Butonul permite utilizatorului să schimbe între diverse moduri de desen.
Line 111: Line 111:
  
  
 +{{:​pm:​prj2025:​atoader:​screenshot_2025-05-20_005906.png?​600|}}
  
- 
-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 
  
  
 ===== Software Design ===== ===== Software Design =====
 +
 +==== Descrierea codului aplicației (firmware) ====
 +
 +  * **Mediu de dezvoltare:​** Arduino IDE, programarea s-a realizat în limbajul C/C++ specific platformei Arduino.
 +  ​
 +  * **Librării și surse 3rd-party:​**
 +    * `Stepper.h` – folosită pentru controlul motoarelor pas cu pas 28BYJ-48 prin driverele ULN2003.
 +    * `LiquidCrystal_I2C.h` – pentru controlul unui ecran LCD 1602 prin interfața I2C (cu backlight).
 +    * `SPI.h` și `SD.h` – pentru inițializarea și operarea modulului de card microSD pe magistrala SPI.
 +  ​
 +  * **Algoritmi și structuri implementate:​**
 +    * Mișcare sincronă a celor două motoare folosind funcția personalizată `stepTogether`,​ care calculează pașii proporțional în funcție de traiectoria dorită.
 +    * Funcții abstracte `stepX` și `stepY` pentru a naviga în planul X/Y, care țin cont de limitele de mișcare și actualizează poziția curentă.
 +    * Implementare a două moduri de desen: **zigzag** și **spirală**,​ selectabile cu un buton și afișate pe ecranul LCD.
 +    * Algoritm PWM software (cu `digitalWrite` și `delayMicroseconds`) pentru controlul vizual pe un LED conectat la pin analogic.
 +    * Comenzi seriale interpretate în `loop()` pentru a permite controlul manual al brațului desenator din tastatură (WASD și alte shortcut-uri).
 +  ​
 +  * **Funcții implementate principale:​**
 +    * `drawZigZag(int size)` – desenează modelul zigzag pe întreaga suprafață.
 +    * `drawSquareSpiral(int size)` – desenează o spirală pătrată cu pasul specificat.
 +    * `stepX(int steps)` și `stepY(int steps)` – mută bila în plan pe axele X/Y.
 +    * `center()` și `goHome()` – repoziționează bila în centrul sau la originea suprafeței.
 +    * `logFile = SD.open(...)` – scrie un log cu tipul desenului și timpul de execuție în milisecunde.
 +
 +----
  
  
-<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> +  * [[https://​youtube.com/​shorts/​D8XvRboe0RU|Desenare (Sand Drawing)]] 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+  * [[https://​youtube.com/​shorts/​DJ0Bj3kJju0|Selectare moduri]] 
-</note>+  * [[https://​youtube.com/​shorts/​nIZXOoKpGAE|Control PWM pe LED]] 
 + 
 + 
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Proiectul „Sand Drawing Machine” a fost o oportunitate excelentă de a combina partea de hardware cu cea software într-o aplicație creativă și interactivă. Utilizând un Arduino Uno, două motoare pas cu pas 28BYJ-48 și un ecran LCD cu interfață I2C, am reușit să construiesc un dispozitiv care poate desena modele precum spirale și zigzaguri într-un strat de nisip, cu ajutorul unei bile metalice ghidate magnetic.
  
-<note warning>​ +Pe parcursul dezvoltării am întâlnit provocări legate de sincronizarea motoarelorcontrolul precis al pozițieicitirea ​de pe cardul SD șafișarea informațiilor ​pe LCD, dar toate acestea au fost depășite prin testare și implementarea unor soluții personalizate.
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surseschemeetc. 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**+Funcționalitățile software, precum controlul PWM al LED-ului, salvarea logurilor ​pe cardul SD și comutarea modurilor prin buton, au adus un plus de interactivitate proiectuluiAm învățat importanța gestionării resurselor hardware limitate ale microcontrollerului,​ precum și avantajele modularizării codului ​în funcții clare. 
-</​note>​+ 
 +Consider că proiectul poate fi extins în viitor prin adăugarea unor senzori pentru auto-calibrare,​ integrarea unei aplicații mobile pentru control ​de la distanță ​sau adăugarea unor modele mai complexe citite de pe fișiere externe. 
 + 
 +**În concluzie**, Sand Drawing Machine demonstrează cu succes cum pot fi combinate cunoștințele de electronică,​ programare și design pentru a crea un sistem funcțional,​ estetic și educativ
 + 
 +===== Download =====
  
-===== Jurnal =====+{{:​pm:​prj2025:​atoader:​cod_sand_drawing.zip|}}
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
-===== 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>​ 
  
pm/prj2025/atoader/alexandru.stefan03.1747692607.txt.gz · Last modified: 2025/05/20 01:10 by alexandru.stefan03
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