Differences

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

Link to this comparison view

pm:prj2026:theodor_ioan.buliga:ioan.sabou [2026/05/04 14:25]
ioan.sabou [Jurnal]
pm:prj2026:theodor_ioan.buliga:ioan.sabou [2026/05/27 01:12] (current)
ioan.sabou [Scheme electrice]
Line 1: Line 1:
-====== ​Fire Tetris ​======+====== ​Tamagotchi Circuits ​======
  
 ===== Introducere ===== ===== Introducere =====
  
-**Fire Tetris** implementează jocul clasic Tetris pe placă **ATmega328P Xplained Mini**, cu un element inovator: viteza de cădere a pieselor este controlată în timp real de temperatura ambiantă, citită de un senzor analogic **LM35**. Feedback-ul sonor este asigurat de un buzzer pasiv, iar afișarea jocului se face pe un ecran OLED 0.96" prin I2C.+Tamagotchi Circuits este un proiect individual care combină embedded cu interfață hardware interactivă pe ESP32.
  
-Conceptul de bază — **Thermal Difficulty Scaling** — transformă temperatura mediului într-un parametru de dificultatecu cât temperatura crește, cu atât piesele cad mai repedeAceasta face jocul util nu doar ca divertisment,​ ci și ca metodă intuitivă (gamificată) de monitorizare a temperaturii în medii casnice sau industriale.+Ideea principală: o fantomă (Ghost Boo) afișată pe un ecran OLED devine tristă în timpPentru a menține fericită, utilizatorul trebuie să joace minigame-uri — unele dintre ele implică construirea unor circuite electronice reale pe breadboard, pe care ESP32 le validează și le face graficul pe un al doilea ecran OLED dedicat minigame-urilor.
  
-**Utilitate:​** +Scopul proiectului este de a oferi un sistem de recompensă concret (menținem fantoma fericită) ​prin construirea ​și înțelegerea unor circuite electroniceînvățând astfel concepte de bază din electronică ​și fizică.
-  * Gamificarea monitorizării temperaturii:​ utilizatorul percepe instinctiv creșterea temperaturii ​prin creșterea dificultății jocului. +
-  * Proiect educațional completacoperind GPIO, ADC, I2C, Timere ​și PWM pe un microcontroler AVR.+
  
-===== Descriere generală =====+Proiectul este finalizat cu 9 minigame-uri funcționale:​ potentiometer,​ RC circuit (6 configurații),​ voltage divider, diode rectifier, transistor switch, NPN amplifier, deadbeet rhythm, și metronome.
  
-Proiectul are o componentă fizică importantadispozitivul embedded pe ATmega328P. +Abstractizarea generală a conceptului de „circuit minigame"​ ca struct `minigame_t` este implementată: fiecare minigame expune `init``deinit``run` și un `mood_reward`,​ toate înregistrate într-un registry cu progresie liniară.
-**Intrări:​** +
-  * 3 butoane tactile (StângaDreaptaRotație) — citite prin întreruperi externe +
-  * Senzor de temperatură LM35 — citit prin ADC (semnal analogic 0–1V)+
  
-**Ieșiri:** +Proiectul este util pentru că stimulează dorința de a învăța electronică ​șde a construi circuite corecteîntr-un mod interactiv ​și vizual.
-  * Ecran OLED SSD1306 0.96 — afișarea câmpului ​de jocscorului ​și temperaturii (I2C) +
-  * Buzzer pasiv — melodii și efecte sonore (PWM)+
  
-Modul în care interacționează modulele:+===== Descriere Generală =====
  
-^ Modul ^ Interfață ^ Rol în sistem ^ +==== Minigame-uri ====
-| Butoane tactile | GPIO / INT | Control direcție și rotație piese | +
-| Senzor LM35 | ADC (analogic) | Citirea temperaturii,​ scalarea vitezei | +
-| Ecran OLED SSD1306 | I2C | Afișarea jocului, scorului, temperaturii | +
-| Buzzer pasiv | PWM (Timer) | Muzică de fundal și efecte sonore | +
-| Timer1 (AVR intern) | Întrerupere periodică | Gravity — căderea pieselor |+
  
-Concepte din laboratoare utilizate:+^ # ^ Minigame ^ Descriere ^ GPIO-uri ^ Status ^ 
 +| 0 | Potentiometer | Wiperul unui potențiometru;​ menții zona țintă random 3s | GPIO32 (ADC1 CH4) | ✓ Implementat | 
 +| 1 | RC circuit (6 config.) | Construiești R+C pe breadboard; ESP măsoară τ prin least-squares pe ln(V) | GPIO25 out, GPIO34 ADC | ✓ Implementat | 
 +| 2 | Voltage divider | Doi rezistori în serie; ESP validează raportul de tensiune | GPIO25 out, GPIO34 ADC | ✓ Implementat | 
 +| 3 | RC low/​high-pass filter | R+C; ESP măsoară răspunsul în frecvență la PWM | GPIO25 PWM, GPIO34 ADC | TODO | 
 +| 4 | Diode rectifier | Diodă + condensator pe semnal cosine 200Hz redresat; osciloscop live | GPIO25 DAC, GPIO34 ADC | ✓ Implementat | 
 +| 5 | Capacitor buffer | Condensatorul menține tensiunea după tăierea GPIO-ului | GPIO25 out, GPIO34 ADC | TODO | 
 +| 6 | Transistor switch | NPN în saturație (1kΩ bază); ESP conduce baza, măsoară Vc la colector | GPIO25 out (bază), GPIO34 ADC (colector) | ✓ Implementat | 
 +| 6b | NPN Amplifier | NPN în regim activ (1MΩ bază); ESP măsoară β real (Ib=2.6µA fix) | GPIO25 out (bază), GPIO34 ADC (colector) | ✓ Implementat | 
 +| 7 | LM-35 temperature | Senzor temperatură extern, output direct pe ADC | GPIO35 (ADC1 CH7) | TODO | 
 +| 8 | Deadbeet rhythm | ESP redă o secvență de LED-uri; utilizatorul o repetă pe butoane colorate | GPIO13/​12/​14 out (LED), GPIO19/​17/​16 in (R/G/B) | ✓ Implementat | 
 +| 9 | Metronome | Două potențiometre (BPM + duty cycle) + buzzer pasiv; ține 3s pentru pass | GPIO32, GPIO35 ADC; GPIO23 PWM | ✓ Implementat |
  
-  * **Lab 0 – GPIO:** citirea butoanelor de control (Stânga, Dreapta, Rotație) cu rezistențe pull-up interne +Games 1–6b partajează GPIO25 ​și GPIO34 — circuitul ​de pe breadboard se schimbă între elenu pinii.
-  * **Lab 1 – UART:** log-uri seriale pentru debugging în timpul dezvoltării (afișarea valorilor ADC și stării jocului) +
-  * **Lab 3 – Timere / Întreruperi:​** Timer1 în mod CTC generează întreruperea periodică ​de "​gravity"​ (căderea pieselor); întreruperi externe INT0/​INT1/​PCINT pentru butoanelatență garantată sub 50 ms +
-  * **Lab 4 – ADC:** citirea tensiunii de ieșire a senzorului LM35 (10 mV/°C), convertită în temperatură și mapată la intervalul de viteză al jocului +
-  * **Lab 6 – I2C:** comunicarea cu ecranul OLED SSD1306 prin magistrala TWI a ATmega328P (adresă 0x3C, 400 kHz) +
-  * **PWM:** generarea tonurilor pe buzzer prin modularea frecvenței unui timer în mod Fast PWM+
  
-**Element de noutate — Thermal Difficulty Scaling:**+==== Schema bloc ====
  
-Mecanismul citește temperatura la fiecare 500 ms prin ADC și recalculează perioada Timer1Formula de mapare:+{{:​pm:​prj2026:​theodor_Ioan.buliga:tamagotchi.png?​600|}}
  
-<​code>​ +Modulele principale și interacțiunile dintre ele:
-perioadă_gravity (ms) = MAX_PERIOD - ((temperatura - TEMP_MIN) / (TEMP_MAX - TEMP_MIN)) * (MAX_PERIOD - MIN_PERIOD)+
  
-Exemplu: TEMP_MIN=15°C → 800ms/tick | TEMP_MAX=40°C → 150ms/tick +  * **ESP-32 Devkit V1** — nucleul sistemului; orchestrează toate minigame-urile,​ conduce ambele OLED-uri și perifericele 
-</code> +  * **OLED SH1106 1.3"** — afișează fantoma permanent și starea ei (fericită ​tristă ​măsurând ​celebrând) 
- +  * **OLED SSD1306 0.96"​** — display dedicat minigame-urilor:​ instrucțiuni,​ bare de progres, osciloscop live 
-Astfella temperaturi ridicatejocul devine semnificativ mai dificilfără nicio interacțiune din partea utilizatorului.+  * **Buzzer pasiv (PWM)** — folosit în metronome minigame 
 +  * **LED-uri RGB** — folosite în deadbeet rhythm game 
 +  * **Butoane tactile** — input pentru deadbeet rhythm game + butonul principal BTN_A (GPIO33) 
 +  * **ADC GPIO34** — măsurare circuite RCvoltage dividerrectifiertransistor, etc. 
 +  * **ADC GPIO35** — senzor temperatură LM-35 / duty cycle metronome 
 +  * **ADC GPIO32** — potențiometru minigame / BPM metronome
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-**Listă de componente:​**+==== Pinout ====
  
-^ Componentă ^ Cantitate ^ Rol ^ +=== Display-uri ===
-| ATmega328P Xplained Mini | 1 | Microcontroler principal | +
-| Ecran OLED SSD1306 0.96" | 1 | Afișarea jocului (I2C) | +
-| Senzor temperatură LM35 | 1 | Citire temperatură ambiantă (ADC) | +
-| Buzzer pasiv | 1 | Efecte sonore și muzică (PWM) | +
-| Butoane tactile 6mm | 3 | Control: Stânga, Dreapta, Rotație | +
-| Rezistențe 10kΩ | 3 | Pull-up extern pentru butoane (opțional, se pot folosi cele interne) | +
-| Rezistență 100Ω | 1 | Protecție buzzer | +
-| Breadboard + fire dupont | — | Interconectare | +
-| Cablu USB | 1 | Alimentare și programare |+
  
-**Conexiuni principale:​**+^ Display ^ Diagonală ^ Rol ^ Bus I2C ^ SDA ^ SCL ^ Adresă ^ 
 +| SH1106 ​ | 1.3" | Ghost — permanent activ | I2C0 (I2C_NUM_0) | GPIO18 | GPIO5 | 0x3C | 
 +| SSD1306 | 0.96" | Minigame support | I2C1 (I2C_NUM_1) | GPIO4 | GPIO15 | 0x3C |
  
-^ Semnal ^ Pin ATmega328P ^ Observații ^ +Ambele display-uri au adresa ​0x3C — menținute pe bus-uri separate pentru a evita conflictul. Ambele sunt cablate pe Side 1 al DevKit-ului pentru cablaj curat.
-| OLED SDA | PC4 (SDA) | I2C, adresă ​0x3C +
-| OLED SCL | PC5 (SCL) | I2C, 400 kHz | +
-| LM35 OUT | PC0 (ADC0) | Semnal analogic 0–500 mV | +
-| Buzzer | PB1 (OC1A) | PWM Timer1, rezistență serie 100Ω | +
-| Buton Stânga | PD2 (INT0) | Întrerupere externă, pull-up intern | +
-| Buton Dreapta | PD3 (INT1) | Întrerupere externă, pull-up intern | +
-| Buton Rotație | PB0 (PCINT0) | Pin Change Interrupt |+
  
-**Alimentare:** 5V prin USB (ATmega328P Xplained Mini); OLED-ul acceptă 3.3V–5V.+=== Pini minigame-uri === 
 + 
 +^ # ^ Minigame ^ Circuit ^ Pini ^ 
 +| 0 | Potentiometer | Wiper pot la ADC | GPIO32 (ADC1 CH4) | 
 +| 1 | RC circuit | R + C la GND | GPIO25 out, GPIO34 ADC | 
 +| 2 | Voltage divider | Doi rezistori în serie | GPIO25 out, GPIO34 ADC | 
 +| 3 | RC low/​high-pass filter | R+C, măsurare răspuns frecvență | GPIO25 PWM, GPIO34 ADC | 
 +| 4 | Diode rectifier | Diodă + cap pe semnal cosine redresat | GPIO25 DAC, GPIO34 ADC | 
 +| 5 | Capacitor buffer | Cap menține tensiunea după GPIO cut | GPIO25 out, GPIO34 ADC | 
 +| 6 | Transistor switch | NPN saturație1kΩ bază, LED pe colector | GPIO25 out (bază 1kΩ), GPIO34 ADC (colector) | 
 +| 6b | NPN Amplifier | NPN activ: 1MΩ bază, 1kΩ colector, β real | GPIO25 out (bază 1MΩ), GPIO34 ADC (colector) | 
 +| 7 | Temperature LM-35 | Output LM-35 la ADC | GPIO35 (ADC1 CH7) | 
 +| 8 | Deadbeet rhythm | LED-uri secvență, butoane colorate repetă | GPIO13/​12/​14 out (R/G/B LED), GPIO19/​17/​16 in (R/G/B buton) | 
 +| 9 | Metronome | Două pot-uri + buzzer pasiv | GPIO32 ADC (BPM), GPIO35 ADC (duty), GPIO23 PWM | 
 + 
 +=== Pini ficși === 
 + 
 +^ Pin ^ Rol ^ 
 +| GPIO33 | BTN_A — buton principal (ISR, falling edge, debounce 300ms) | 
 +| GPIO23 | Buzzer PWM (metronome) | 
 + 
 +==== Listă de piese ==== 
 + 
 +^ # ^ Componentă ^ Cantitate ^ Observații ^ 
 +| 1 | ESP-32 Devkit V1 (DOIT) | 1 | Microcontroller principal | 
 +| 2 | Ecran OLED SH1106 1.3", 128×64, I2C | 1 | SDA→GPIO18,​ SCL→GPIO5display fantomă | 
 +| 3 | Ecran OLED SSD1306 0.96", 128×64, I2C | 1 | SDA→GPIO4,​ SCL→GPIO15;​ display minigame | 
 +| 4 | Senzor temperatură LM-35 | 1 | ADC→GPIO35 | 
 +| 5 | Butoane tactile + set butoane colorate SYB-120 | 4+ | 3× deadbeet rhythm (R/G/B) + 1× BTN_A principal | 
 +| 6 | LED-uri RGB | | Deadbeet rhythm game (R/G/B) | 
 +| 7 | Buzzer pasiv | 1 | Metronome minigame (PWM GPIO23) | 
 +| 8 | Potențiometre | 2+ | 1× potentiometer minigame (GPIO32), 1× metronome duty (GPIO35); potențiometre colorate SYB-120 | 
 +| 9 | Rezistențe,​ condensatoare,​ diode | asortate | Pentru circuit minigame-uri (RC, divider, filter, rectifier) | 
 +| 10 | Tranzistoare NPN 2N2222 | 2+ | Transistor switch minigame (1kΩ bază) + NPN amplifier (1MΩ bază) | 
 +| 11 | Kit breadboard SYB-120 (Optimus Digital) | 1 | 4 breadboard-uri,​ fire, butoane colorate, potențiometre | 
 +| 12 | Fire de breadboard | — | Conectică generală | 
 + 
 +==== Scheme electrice ==== 
 + 
 +{{:​pm:​prj2026:​theodor_Ioan.buliga:​schema_rc.pdf|Schema hardware placa (PDF)}} 
 + 
 +**Voltage divider, RC circuit diode rectifier, transistor switch, NPN amplifier, deadbeet rhythm, metronome:​** Vezi caietul cu ecuațiile și schemele pentru referință. 
 + 
 +**TODO:** Schemă electrică pentru RC low/​high-pass filter 
 + 
 +**TODO:** Schemă electrică pentru capacitor buffer 
 + 
 +**TODO:** Schemă electrică pentru LM-35 temperature sensor 
 + 
 +==== Diagrame de semnal ==== 
 + 
 +Vezi caietul cu ecuațiile și schemele pentru referință.
  
 ===== Software Design ===== ===== Software Design =====
  
-Firmware-ul este scris în **C pur**, compilat cu **avr-gcc** și flashat cu **avr-dude** prin interfața EDBG a plăcii Xplained Mini. Editarea se face în **VS Code** cu extensia AVR.+==== Mediu de dezvoltare ====
  
-**Librării ​și surse third-party:​** +  ​PlatformIO + ESP-IDF v5.x (framework-espidf) 
-  * [[https://​github.com/​lexus2k/​ssd1306|ssd1306 (lexus2k)]] ​— driver I2C pentru ​OLED, portată ​și adaptată pentru AVR +  * Toolchain: xtensa-esp-elf 
-  * Rutine ​ADC și Timer proprii, scrise direct pe registre AVR (fără Arduino HAL)+  ​* Librării third-party: ​niciuna ​— drivere custom ​pentru ​SH1106 ​și SSD1306, ​ADC oneshot ​(ESP-IDF built-in)
  
-**Structura modulară a codului:**+==== Arhitectură ====
  
-<​code>​ +**Două task-uri FreeRTOS:** 
-fire_tetris/​ +  * `ghost_task` ​— 8KB stack, rulează permanent la 50ms tick; gestionează animațiile fantomei, decayul de mood și spawn-ul minigame_task 
-├── main.c ​          — inițializare ​și buclă principală +  * `minigame_task` ​— 4KB stackspawnat on-demand la apăsarea butonului; distrus la finalul minigame-ului 
-├── tetris.c / .h    ​— logica jocului (piesecoliziuni, linii complete+ 
-├── display.c / .h   — randarea câmpului ​pe OLED prin driver SSD1306 +**Abstractizare minigame (`minigame_t`):** 
-├── adc.c .h       — citire LM35, conversie în temperatură,​ mapare viteză +<​code ​c
-├── timer.c ​.h     ​— ​configurare ​Timer1 ​(gravity), Timer2 ​(PWM buzzer) +typedef struct { 
-├── buttons.c ​.h   — configurare întreruperi INT0, INT1, PCINT0 +    const char  *name; ​         ​// afișat ​pe SH1106 „NEXT:"​ 
-└── music.c ​.h     ​— tabele de note și redare melodii pe buzzer+    ​esp_err_t ​ (*init)(void); ​  // configurare ​GPIO/ADC 
 +    void       (*deinit)(void)// restaurare GPIO safe state 
 +    ​bool ​      ​(*run)(void); ​   ​// loop blocant; true = pass 
 +    uint8_t ​    ​mood_reward; ​   // puncte mood la PASS 
 +} minigame_t;
 </​code>​ </​code>​
  
-**Algoritmi cheie:**+**Registry (`minigame_registry.c`):** progresie liniară; `registry_advance()` apelat indiferent de rezultat (pass sau abort).
  
-  ​* **Logica Tetris:** reprezentarea câmpului ca matrice uint8_t[20][10];​ detecție coliziuni bit cu bit; rotație piese prin matrici precalculate (4 orientări × 7 piese). +**Ghost state machine:** 5 stări — NEUTRAL, SAD, HAPPY, CELEBRATING,​ MEASURINGDecay de mood dependent de bandă ​(mai rapid la mood scăzut)Animații 2-frame per stare pe SH1106.
-  * **Gravity prin Timer1 ​(CTC):​** ​la fiecare overflow ISR, piesa curentă coboară un rândPerioada se recalculează după fiecare citire ADC. +
-  * **Citire ADC cu oversamplig:​** media a 8 conversii consecutive → reducerea zgomotului la ±0.5°C. +
-  * **PWM buzzer:** Timer2 în Fast PWM, frecvența modificată prin registrul OCR2A pentru fiecare notă; durata notelor controlată de Timer0.+
  
-**Utilizarea registrelor pentru performanță:**+**Buton (`g_minigame_btn`):** ISR pe GPIO33 (falling edge, debounce 300ms). Când un minigame este activ, apăsările sunt rutate prin `g_minigame_btn` — fiecare minigame își gestionează propria logică de stop/avans.
  
-Toate configurările periferice se fac direct pe registre (TCCR1B, ADMUX, TWBR etc.) — fără overhead de librărie. ISR-urile sunt minimale: setează un flag atomic, logica se execută în bucla principală (pattern producer–consumer).+==== RC Minigame ​— detalii algoritm ====
  
-**Metrici de performanță țintă:**+6 configurații modulare, toți parametrii derivați din `tau_ms`:
  
-Metrică ​Țintă ​Metodă de măsurare ​+Config ​C ^ τ ^ Concept ​
-Latența buton → reacție piesă | < 50 ms Osciloscop pe pin GPIO + log UART +RC 100ms | 1kΩ | 100µF | 100ms | Rezistență mică → descărcare rapidă | 
-Precizia citirii temperaturii ​± 1°C Comparație cu termometru ​de referință | +RC 200ms | 2kΩ | 100µF | 200ms | R dublu → τ dublu 
-Timp randare cadru OLED < 30 ms Timestamp UART înainte/​după transfer I2C | +RC 500ms | 10kΩ | 2×100µF serie | 500ms | C serie reduce capacitatea | 
-Perioadă gravity minimă | 150 ms Verificare cu osciloscop pe pin debug | +| RC 1s | 10kΩ | 100µF ​1s Configurație de bază | 
-Consum memorie SRAM < 1.5 KB Raport avr-size după compilare ​|+RC 2s 10kΩ 2×100µF paralel ​2s C paralel dublează capacitatea ​| 
 +RC 4s 20kΩ (2× serie) ​2×100µF paralel ​4s Compus — τ = R×C scalează cu ambii |
  
-===== Rezultate Obținute =====+  * `charge_ms ​6 × τ` (încărcare la 99.75% din Vs) 
 +  * `sample_interval_ms ​5τ / 128` (128 sample-uri acoperă 5τ) 
 +  * τ ≥ 500ms → osciloscop live (flush per sample); τ < 500ms → batch (toate sample-urile,​ un singur flush) 
 +  * τ calculat prin least-squares pe ln(V(t)) cu timestamps reale (`esp_timer_get_time()`) 
 +  * Toleranță ±35% pentru a acomoda toleranța componentelor electronice (condensatoare ±20%)
  
-<note tip> +==== TODO Software ====
-Secțiunea va fi completată după finalizarea și testarea hardware-ului. Vor fi incluse: capturi video ale jocului funcțional,​ grafice ale răspunsului termic, măsurători de latență și precizie ADC. +
-</​note>​+
  
-Stadiu curent: +  ​RC low/high-pass filter minigame 
-  * Logica jocului Tetris — implementată și testată în simulator +  * Capacitor buffer minigame 
-  ​Driver OLED I2C — funcțional,​ randare la ~28 ms/cadru (măsurat prin UART) +  * LM-35 temperature minigame
-  * Citire ADC LM35 — funcțional,​ precizie ±1.2°C față de referință +
-  * Integrare Thermal Difficulty Scaling — în curs de testare pe hardware+
  
 ===== Concluzii ===== ===== Concluzii =====
  
-<note tip> +Proiectul a atins obiectivul principal: 9 minigame-uri funcționale,​ fiecare cerând utilizatorului să construiască un circuit real pe breadboard ​și să îl valideze cu ESP32.
-Concluziile vor fi redactate după finalizarea proiectului ​și a testelor complete. +
-</​note>​+
  
-Proiectul demonstrează că un microcontroler AVR de complexitate medie (ATmega328P) poate rula un joc cu logică non-trivială,​ grafică pe OLED și feedback termic în timp real, folosind exclusiv periferice hardware ​(timereADCI2CPWM) fără ​sistem de operare. Mecanismul **Thermal Difficulty Scaling** reprezintă un exemplu concret de îmbinare ​senzorilor analogici cu logica aplicației.+Abstractizarea `minigame_t` s-a dovedit robustă — fiecare ​joc nou a necesitat modificări în exact 3 fișiere (minigame nou`minigame_registry.c``minigame_rewards.h`), fără a atinge codul existent.
  
-===== Download =====+Cea mai complexă măsurătoare:​ RC τ prin least-squares pe ln(V) cu timestamps reale, toleranță ±35% pentru componente reale. Cea mai vizuală: diode rectifier cu osciloscop live pe SSD1306 — 128 sample-uri la 200Hz, 2 cicluri complete pe ecran.
  
-<note warning>​ +GPIO25 ​și GPIO34 ​sunt partajate ​de 7 jocuri (RC, voltage dividerrectifier, transistor switch, NPN amplifier) — breadboard-ul se schimbă între minigame-uri, pinii nu. Aceasta a simplificat semnificativ cablajul permanent.
-Codul sursă, schemele electrice ​și resursele proiectului ​sunt disponibile pe GitLab. Repository-ul include un fișier README cu instrucțiuni ​de compilare și flashareun ChangeLog cu evoluția proiectului și un Makefile pentru build automat cu avr-gcc + avr-dude. +
-</​note>​+
  
-===== Jurnal =====+Remaparea display-urilor pe Side 1 al DevKit-ului (SSD1306→GPIO4/​15,​ SH1106→GPIO18/​5) a eliminat firele lungi care traversau breadboard-ul.
  
-**Planificare (Gantt simplificat):**+Rămân de implementatRC filter, capacitor buffer și LM-35 — fiecare necesită aproximativ aceeași structură ca jocurile existente.
  
-^ Etapă ^ Săptămâna ^ Status ^ +===== Download =====
-| Achiziție componente | S1 (1–7 apr) | ✔ Finalizat | +
-| Schemă electrică și conexiuni breadboard | S2 (8–14 apr) | ✔ Finalizat | +
-| Logica jocului Tetris (simulator PC) | S3–S4 (15–28 apr) | ✔ Finalizat | +
-| Integrare senzori (ADC, I2C, PWM) | S5 (29 apr–5 mai) | 🔄 În curs | +
-| Testare completă + metrici | S6 (6–12 mai) | ⏳ Planificat | +
-| Documentație finală + demo | S7 (13–19 mai) | ⏳ Planificat |+
  
-**Intrări jurnal:**+**TODO:** Arhivă cu sursele finale, README și instrucțiuni de compilare/​flash.
  
-  ​* **aprilie ​2026** — comandă ​componente ​(OLED, ​LM35, butoane, buzzer) +===== Jurnal ===== 
-  * **mai 2026** — scris functionalitate docuwiki+ 
 +  ​* **11 aprilie** — prima comandă: breadboard, SSD1306 ​(OLED 0.96" I2C)LM-35 
 +  * **6 mai** — a doua comandă: ESP-32SH1106 (OLED 1.3" I2C) 
 +  * **10 mai** — primul demo funcțional:​ fantoma animată pe OLED, circuit RC pe breadboard, grafic al curbei de descărcare afișat pe ecran 
 +  * **16 mai** — sistem complet de abstractizare minigame (minigame_t,​ registry, două task-uri FreeRTOS); potentiometer minigame funcțional;​ RC circuit minigame: osciloscop live pe SSD1306, τ prin least-squares,​ 6 configurații modulare 
 +  * **18 mai** — deadbeet rhythm minigame implementat:​ secvență LED R/G/B generată de ESP, utilizatorul repetă pe 3 butoane 
 +  * **20 mai** — achiziție kit SYB-120 (4 breadboard-uributoane colorate, potențiometre) de la Optimus Digital 
 +  * **23 mai** — voltage divider minigame implementat 
 +  * **23 mai** — remapare display-uri pe Side 1: SSD1306→GPIO4/​GPIO15,​ SH1106→GPIO18/​GPIO5;​ butoane deadbeet remapate pe GPIO19/​17/​16 
 +  * **23 mai** — metronome minigame implementat:​ două potențiometre (BPM + duty cycle) + buzzer ​pasiv, hold 3s pentru pass 
 +  * **23 mai** — diode rectifier minigame implementat:​ DAC cosine 200Hz pe GPIO25, osciloscop live SSD1306, validare prin std dev < 100mV 
 +  * **24 mai** — NPN transistor switch minigame implementat (1kΩ bază, LED pe colector, pass dacă Vc/Vcc < 0.15); adăugat NPN_THEORY.md cu pinout 2N2222 
 +  * **26 mai** — NPN amplifier variant implementat:​ 1MΩ bază (Ib=2.6µA),​ SSD1306 afișează Vc, Ic și β real; pass dacă 20 ≤ β ≤ 800
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-**Resurse Hardware:** +  ​Datasheet ESP32 — [[https://​www.espressif.com/​sites/​default/​files/​documentation/​esp32_datasheet_en.pdf]] 
-  * [[https://​www.microchip.com/en-us/product/atmega328p|Datasheet ATmega328P — Microchip]] +  * Datasheet SH1106 — [[https://​www.displayfuture.com/Display/datasheet/controller/​SH1106.pdf]] 
-  * [[https://​cdn-shop.adafruit.com/​datasheets/​SSD1306.pdf|Datasheet SSD1306 OLED Controller]] +  * Datasheet SSD1306 — [[https://​cdn-shop.adafruit.com/​datasheets/​SSD1306.pdf]] 
-  * [[https://​www.ti.com/​lit/​ds/​symlink/​lm35.pdf|Datasheet LM35 — Texas Instruments]] +  * Datasheet LM-35 — [[https://​www.ti.com/​lit/​ds/​symlink/​lm35.pdf]] 
-  * Datasheet ​ATmega328P Xplained Mini (Microchip) +  * Datasheet ​2N2222 — [[https://​www.onsemi.com/​pdf/​datasheet/​p2n2222a-d.pdf]] 
- +  ESP-IDF v5 I2C Master docs — [[https://​docs.espressif.com/​projects/​esp-idf/​en/​latest/​esp32/​api-reference/​peripherals/​i2c.html]] 
-**Resurse Software:** +  * ESP-IDF v5 ADC Oneshot docs — [[https://docs.espressif.com/projects/esp-idf/en/​latest/​esp32/​api-reference/​peripherals/​adc_oneshot.html]] 
-  * [[https://github.com/lexus2k/ssd1306|Driver SSD1306 pentru AVR (lexus2k/ssd1306)]] +  * ESP-IDF v5 DAC Cosine docs — [[https://​docs.espressif.com/​projects/​esp-idf/​en/​latest/​esp32/​api-reference/​peripherals/​dac.html]] 
-  * Documentația oficială avr-libc +  * ESP-IDF v5 FreeRTOS docs — [[https://​docs.espressif.com/​projects/​esp-idf/​en/​latest/​esp32/​api-reference/​system/​freertos.html]]
-  * Materiale de laborator PM — GPIO, ADC, I2C, Timere, PWM+
  
 <​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/prj2026/theodor_ioan.buliga/ioan.sabou.1777893928.txt.gz · Last modified: 2026/05/04 14:25 by ioan.sabou
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