Differences

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

Link to this comparison view

pm:prj2025:atoader:raluca_aida.preda [2025/05/19 00:02]
raluca_aida.preda
pm:prj2025:atoader:raluca_aida.preda [2025/05/25 18:43] (current)
raluca_aida.preda
Line 115: Line 115:
  
 ===== Software Design ===== ===== Software Design =====
 +**Mediu de dezvoltare:​** ​
 +  * Arduino IDE
 +**Librării:​** ​
 +  * SPI.h – pentru comunicaţia SPI cu modulul SD.
 +  * SD.h – pentru citirea de fişiere de pe cardul SD (findFirstWav,​ parseWavHeader).
 +  * HX711.h – driverul standard pentru conversia celulei de sarcină (tare, get_units).
 +  * avr/​interrupt.h – pentru definirea şi folosirea ISR-ului Timer1_COMPA_vect.
 +  * În plus, nu folosim nicio librărie I²C: am implementat “bit-banged” direct pe D2/D4.
 +**Structuri și algoritmi:​**
 +  * Structuri:
 +    * Enumerare enum Unit { KG, G, ML, DL, OZ } — facilitează ciclarea între unităţi de măsură.
 +    * Arrays pentru debounce (lastDebounceTime[3],​ lastBtnState[3]).
 +  * Algoritmi
 +    * Debounce simplu: compară starea curentă a fiecărui buton cu ultima, cu o întârziere minimă (debounceDelay).
 +    * State-machine PWM-WAV:
 +      * playing = false/true → ISR sau buclă principală porneşte/​opreşte redarea.
 +      * Logica threshold (dacă greutatea > 4.5 kg → porneşte WAV, altfel → opreşte).
 +    * Bit-banged I²C: secvenţă de start, byte-by-byte,​ ACK/NACK, stop – implementată manual pentru LCD.
 +    * Header parsing WAV:
 +      * Sari peste „RIFF” + „fmt” (12 octeți), apoi citești câte 8 bytes per chunk până găsești „data”.
 +** Funcții implementate:​**
 +  * setup() – inițializări (SD, PWM, Timer ISR, LCD, HX711, butoane).
 +  * loop() –
 +    * Debounce & acțiuni butoane (tare, lock, schimb unitate).
 +    * Citire greutate și aplicare offset/​tare.
 +    * Control redare WAV după pragul de 4.5 kg.
 +    * Conversie greutate în unități și afișare pe LCD.
 +  * ISR(TIMER1_COMPA_vect) – citește octet cu octet şi scrie în registrele PWM.
 +  * findFirstWav(),​ parseWavHeader(File &f) – căutare şi poziționare pentru fișierul WAV.
 +  * I²C bit-banged routines: i2c_start(),​ i2c_write_bit(),​ i2c_read_ack(),​ pcf_write(),​ lcd_cmd(), lcd_data() etc.
 +  * Debounce logic – în loop compararea stărilor şi actualizarea timpurilor.
  
- +Codul sursă{{:​pm:​prj2025:​atoader:​cod-cantar.zip|}}
-<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 =====
pm/prj2025/atoader/raluca_aida.preda.1747602171.txt.gz · Last modified: 2025/05/19 00:02 by raluca_aida.preda
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