This shows you the differences between two versions of the page.
pm:prj2025:apredescu:luca.spataru [2025/05/19 13:25] luca.spataru [Hardware Design] |
pm:prj2025:apredescu:luca.spataru [2025/05/28 14:05] (current) luca.spataru [Software Design] |
||
---|---|---|---|
Line 32: | Line 32: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | === Descrierea codului aplicatiei (firmware) === | ||
+ | Firmware-ul este dezvoltat pentru un radio digital construit in jurul platformei Arduino Uno R3. Proiectul permite utilizatorului sa asculte posturi FM, sa comute intre ele, sa caute automat frecvente, sa seteze un temporizator de oprire (sleep timer), sa activeze functia mute si sa salveze posturi preferate in memoria EEPROM. | ||
- | <note tip> | + | Interfata cu utilizatorul se face prin intermediul unui ecran LCD 1602 (cu interfata I2C), un rotary encoder (cu switch), patru butoane, si un switch pentru comutarea modului de functionare al butoanelor. |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | === Mediu de dezvoltare === |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * **Placa**: Arduino Uno R3 |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * **Mediu de dezvoltare**: Arduino IDE |
- | * (etapa 3) surse şi funcţii implementate | + | * **Limbaj de programare**: C++ |
- | </note> | + | |
+ | === Librarii si surse third-party === | ||
+ | * **TEA5767N.h**: librarie folosita pentru controlul modulului radio FM TEA5767. | ||
+ | * **LiquidCrystal_I2C.h**: pentru afisarea informatiilor pe ecranul LCD 1602 cu interfata I2C. | ||
+ | * **EEPROM.h**: librarie nativa Arduino pentru citirea si scrierea datelor persistente (posturi salvate). | ||
+ | |||
+ | === Structura codului === | ||
+ | * **Initializare Sistem** | ||
+ | * Se initializeaza componentele: LCD, radio TEA5767, buzzer, butoane, encoder, LED de stare. | ||
+ | * Se incarca frecventa radio salvata anterior din EEPROM. | ||
+ | * Se afiseaza informatiile initiale pe LCD (frecventa, semnal, canal memorat). | ||
+ | * **Control Encoder** | ||
+ | * Encoderul incrementa sau decrementeaza frecventa curenta. | ||
+ | * Se detecteaza directia de rotatie (stanga/dreapta) si se actualizeaza frecventa. | ||
+ | * Dupa un interval (default 1 secunda), se face actualizarea efectiva a semnalului radio si LCD-ului. | ||
+ | * **Butonare - Functionalitati Multiple** | ||
+ | * Fiecare dintre cele 4 butoane are 2 functii, in functie de starea comutatorului fnSw (Function Switch): | ||
+ | * Salvare/Accesare posturi memorate (FM1–FM4): cu fnSw activat, fiecare buton incarca un canal memorat si actualizeaza frecventa. | ||
+ | * Functii speciale (cu fnSw dezactivat): | ||
+ | * Buton 1/2: cautare automata a postului anterior/urmator (search()). | ||
+ | * Buton 3: Mute/Unmute. | ||
+ | * Buton 4: Timer pentru oprire automata sau reactivare din standby. | ||
+ | * **Timer de Oprire Automata** | ||
+ | * La apasarea butonului 4 in mod normal, se poate activa un cronometru de oprire (sleepTimer). | ||
+ | * Utilizatorul poate selecta durata in minute (de la 1 la 10 minute). | ||
+ | * Dupa expirare, sistemul intra in standby: radio se opreste, LED-ul si afisajul sunt dezactivate. | ||
+ | * **EEPROM - Salvare si Incarcare Date ** | ||
+ | * Se salveaza frecventa curenta intr-o adresa EEPROM corespunzatoare (FM1–FM4). | ||
+ | * La repornirea sistemului, frecventa si butonul utilizat anterior sunt incarcate automat din EEPROM (LAST). | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== |