Differences

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

Link to this comparison view

pm:prj2025:atoader:alexandru.stefan03 [2025/05/28 02:02]
alexandru.stefan03 [Download]
pm:prj2025:atoader:alexandru.stefan03 [2025/05/28 02:06] (current)
alexandru.stefan03 [Concluzii]
Line 116: Line 116:
  
 ===== 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 =====
Line 136: Line 154:
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +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.
 +
 +Pe parcursul dezvoltării am întâlnit provocări legate de sincronizarea motoarelor, controlul precis al poziției, citirea de pe cardul SD și afișarea informațiilor pe LCD, dar toate acestea au fost depășite prin testare și implementarea unor soluții personalizate.
 +
 +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 proiectului. Am învățat importanța gestionării resurselor hardware limitate ale microcontrollerului,​ precum și avantajele modularizării codului în funcții clare.
 +
 +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 ===== ===== Download =====
Line 141: Line 169:
 {{:​pm:​prj2025:​atoader:​cod_sand_drawing.zip|}} {{:​pm:​prj2025:​atoader:​cod_sand_drawing.zip|}}
  
-===== Jurnal ===== 
- 
-<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.1748386939.txt.gz · Last modified: 2025/05/28 02:02 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