Differences

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

Link to this comparison view

pm:prj2026:bianca.popa1106:cezar_andrei.enciu [2026/05/09 14:32]
cezar_andrei.enciu
pm:prj2026:bianca.popa1106:cezar_andrei.enciu [2026/05/18 18:25] (current)
cezar_andrei.enciu
Line 8: Line 8:
 ==== Descriere generala ==== ==== Descriere generala ====
  
-Reflex Analyzer este un sistem embedded pentru masurarea precisa a timpului de reactie uman. Placa ATmega324P ​primeste ​comanda de start dintr-o aplicatie desktop, genereaza un interval de asteptare pseudo-aleator intre 1 si 4 secunde, dupa care emite simultan un semnal sonor (buzzersi unul luminos ​(LED). La apasarea butonului de catre utilizator, cronometrul ​hardware ​se opreste, iar rezultatul — exprimat in milisecunde — este trimis aplicatiei prin USART. Display-ul OLED I2C afiseaza starea sistemului ​in timp realAplicatia centralizeaza rezultatele si prezinta statistici: medieminimmaxim si un grafic al evolutiei ​pe sesiune.+Reflex Analyzer este un sistem embedded pentru masurarea precisa a timpului de reactie uman. Placa ESP32 DevKit V1 primeste comanda de start prin USB-Serial, genereaza un interval de asteptare pseudo-aleator intre 1 si 4 secunde, dupa care emite simultan un semnal sonor prin buzzer si un semnal ​luminos ​prin LED. La apasarea butonului de catre utilizator, cronometrul se opreste, iar rezultatul — exprimat in milisecunde — este afisat pe display-ul LCD 2004 I2C si transmis ​in Monitorul Serial. 
 + 
 +Sistemul functioneaza independentfara aplicatie desktop externafolosind doar firmware-ul incarcat ​pe ESP32 si componentele hardware conectate.
  
 ==== Scop ==== ==== Scop ====
  
-Crearea unui instrument simplu, precis si portabil care sa masoare obiectiv reflexele unui utilizator ​si sa permita urmarirea progresului in timpcu precizie superioara aplicatiilor software pure.+Crearea unui instrument simplu, precis si portabil care sa masoare obiectiv reflexele unui utilizator, ​folosind componente hardware accesibile si implementare embedded bazata pe ESP32.
  
 ==== Ideea de baza ==== ==== Ideea de baza ====
  
-Microcontrollerul **ATmega324P** cronometreaza timpul de reactie folosind **Timer1 pe 16 biti** (rezolutie ​~4μs), activat ​in momentul ​emiterii ​semnalului si oprit prin intreruperea ​externa ​**INT0** la apasarea butonului. Rezultatul este trimis prin **USART** catre o aplicatie desktop ​**Python + PyQt5**. Un display ​**OLED I2C (SSD1306)** ofera feedback local.+Microcontrollerul **ESP32 DevKit V1** cronometreaza timpul de reactie folosind ​functia ​**millis()** cu rezolutie ​de 1ms. Cronometrul porneste ​in momentul ​activarii ​semnalului ​luminos ​si sonor, iar oprirea se face prin intreruperea ​de pe **GPIO4**, declansata ​la apasarea butonului. 
 + 
 +Rezultatul este afisat local pe display-ul ​**LCD 2004 I2C (0x27)** si este transmis prin **USB-Serial (115200 baud)** pentru debugging si verificareBuzzer-ul pasiv este controlat prin modulul ​**LEDC (PWM hardware)** al ESP32.
  
 ==== Utilitate practica ==== ==== Utilitate practica ====
  
-  * **Sportivi** care vor sa isi masoare si imbunateasca ​reflexele in antrenament+  * **Sportivi** care vor sa isi masoare si imbunatateasca ​reflexele in antrenament
   * **Utilizatori generali** curiosi sa isi testeze timpul de reactie cu precizie reala   * **Utilizatori generali** curiosi sa isi testeze timpul de reactie cu precizie reala
-  * **Demonstratii educationale** — ilustreaza concret timere ​hardware, intreruperi si comunicatie seriala+  * **Demonstratii educationale** — ilustreaza concret timere, intreruperi, PWM, I2C si comunicatie seriala
  
 ==== De ce e util ==== ==== De ce e util ====
  
-  * Precizie hardware reala (~4μs rezolutievs. aplicatii web/mobile cu latenta de zeci de ms +  * Precizie hardware reala, cu rezolutie de 1ms folosind millis() 
-  * Detectie **false start** — apasare buton inainte de semnal, tratata ​si raportata ​separat +  * Detectie **false start** — apasare buton inainte de semnal, tratata separat 
-  * Delay **pseudo-aleator** ​(LFSR) — nu se poate anticipa momentul ​semnalului +  * Delay **pseudo-aleator** ​intre 1 si 4 secunde, pentru a evita anticiparea ​semnalului 
-  * **Display local** ​(OLED I2C) — feedback instant ​fara a privi spre ecranul PC-ului +  * **Display local LCD 2004 I2C** — afiseaza starea sistemului si rezultatul ​fara a depinde de o aplicatie externa 
-  * **Export CSV** din aplicatie pentru analiza ulterioara+  * Feedback dublu: semnal luminos prin LED si semnal sonor prin buzzer 
 +  ​Implementare clara folosind automat de stari, intreruperi si PWM hardware
  
 ===== Descriere generala ===== ===== Descriere generala =====
Line 36: Line 41:
 Schema bloc a sistemului: Schema bloc a sistemului:
  
-{{ :​pm:​prj2026:​bianca.popa1106:​schema_bloc_cezar.png?700 |Schema bloc Reflex Analyzer}}+{{ :​pm:​prj2026:​bianca.popa1106:​schema_bloc_cezar_1.png?700 |Schema bloc Reflex Analyzer}}
  
-Fluxul de date pe scurt:+Fluxul de functionare ​pe scurt:
  
-  - Aplicatia desktop ​trimite comanda ​S (start) ​prin portul serial ​catre ATmega324P+  - Utilizatorul ​trimite comanda ​START prin Monitorul Serial ​catre ESP32
-  - Microcontrollerul genereaza un delay aleator ​(1-4s) cu LFSR, dupa care activeaza LED-ul ​si buzzer-ul simultan+  - Microcontrollerul genereaza un delay aleator ​intre 1 si 4 secunde cu random()
-  - Display-ul ​OLED trece de la "​Gata..."​ la "​GO!" ​la momentul semnalului. +  - Display-ul ​LCD trece de la "​Asteptare" ​la "​Gata..." ​si apoi la "​GO!"​
-  - Utilizatorul apasa butonul ​— intreruperea ​externa INT0 opreste Timer1 si calculeaza diferenta ​de timp+  - La momentul semnalului, ESP32 activeaza simultan LED-ul si buzzer-ul
-  - Rezultatul ​in milisecunde ​este trimis prin USART aplicatiei si afisat pe OLED+  - Utilizatorul apasa butonul, iar intreruperea de pe GPIO4 opreste cronometrul
-  - Daca butonul ​apasat inainte de semnal, sistemul ​semnalizeaza ​false start si se reseteaza.+  - Timpul de reactie este calculat ​in milisecundeafisat pe LCD si trimis prin Serial
 +  - Daca butonul ​este apasat inainte de semnal, sistemul ​detecteaza ​false start, emite 3 beep-uri scurte ​si se reseteaza ​automat.
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 52: Line 58:
  
 ^ Componenta ^ Cantitate ^ Rol ^ ^ Componenta ^ Cantitate ^ Rol ^
-ATmega324P-PU ​(DIP-40) | 1 | Microcontroller principal ​+ESP32 DevKit V1 (38 pini) | 1 | Microcontroller principal ​cu WiFi/BT integrat ​|
-| USBasp Programmer | 1 | Programare firmware prin ISP | +
-| Crystal 16MHz | 1 | Sursa de ceas externa | +
-| Condensator 22pF | 2 | Stabilizare crystal | +
-| Condensator 100nF | 1 | Decuplare alimentare ​|+
 | LED rosu 5mm | 1 | Stimul vizual de start | | LED rosu 5mm | 1 | Stimul vizual de start |
 | Rezistor 220 Ohm | 1 | Limitare curent LED | | Rezistor 220 Ohm | 1 | Limitare curent LED |
-| Buzzer pasiv 5V | 1 | Stimul sonor de start, controlat prin PWM | +| Buzzer pasiv | 1 | Stimul sonor de start, controlat prin PWM (LEDC) ​
-| Buton tactil ​6x6mm | 1 | Input reactie utilizator | +| Buton tactil ​12x12mm ​| 1 | Input reactie utilizator | 
-| Display ​OLED I2C 0.96" SSD1306 ​| 1 | Afisare stare sistem si timp de reactie | +| Display ​LCD 2004 I2C | 1 | Afisare stare sistem si timp de reactie ​(20x4 caractere) ​
-Convertor USB-UART CP2102 ​| 1 | Comunicare seriala cu PC +Breadboard 830 puncte ​| 1 | Prototipare circuit ​
-Breadboard + fire jumper | 1 set | Conectica si prototipare ​+Fire jumper ​M-M | 1 set | Conexiuni intre componente ​
-Sursa alimentare 5V USB | 1 | Alimentare circuit ​|+Cablu micro-USB | 1 | Programare + alimentare ESP32 | 
 + 
 +==== Schema electrica ==== 
 + 
 +{{ :​pm:​prj2026:​bianca.popa1106:​schema_electrica_czr.png?​700 ​|Schema electrica Reflex Analyzer}}
  
 ==== Schema de conexiuni ==== ==== Schema de conexiuni ====
  
-^ Pin ATmega324P ​^ Componenta ^ +^ Pin ESP32 ^ Componenta ^ 
-PB0 | Anod LED rosu (prin 220 Ohm la GND) +GPIO5 | Anod LED rosuprin rezistor ​220 Ohm | 
-PD5 / OC0B | Buzzer pasiv (semnal PWM+GPIO18 ​| Buzzer pasiv + pin, semnal PWM prin LEDC 
-PD2 / INT0 | Buton (pull-up intern, cealalta latura GND+GPIO4 | Buton tactil, configurat INPUT_PULLUP, cealalta latura ​la GND | 
-PC0 / SCL | SCL display OLED SSD1306 | +GPIO21 ​/ SDA | SDA display ​LCD 2004 I2C 
-| PC1 / SDA | SDA display ​OLED SSD1306 ​+GPIO22 ​SCL SCL display LCD 2004 I2C 
-PD1 TXD TX convertor USB-UART ​+VIN (5V) VCC display LCD 2004 I2C 
-PD0 / RXD RX convertor USB-UART ​+GND | GND comun pentru LED, buzzer, buton si LCD 
-XTAL1 / XTAL2 Crystal 16MHz (cu 2x 22pF la GND+ 
-| VCC AVCC / GND | Alimentare ​5V + 100nF decuplare |+**Nota:** ESP32 lucreaza la 3.3V logic. LCD-ul este alimentat din VIN/5V, iar comunicatia I2C se face prin liniile SDA si SCL. Modulul I2C al LCD-ului foloseste de obicei adresa **0x27**, dar unele module pot folosi **0x3F**.
  
 ===== Software Design ===== ===== Software Design =====
Line 83: Line 89:
 ==== Mediu de dezvoltare ==== ==== Mediu de dezvoltare ====
  
-  * **avr-gcc + avrdude** — compilare si incarcare firmware in limbaj C +  * **Arduino IDE 2.x** cu suport ESP32 prin pachetul Espressif ESP32 
-  * **VS Code** — editare ​cod firmware +  * **VS Code + PlatformIO** — alternativa pentru ​editare ​si incarcare ​firmware 
-  * **Python 3.11 + PyQt5** — aplicatie desktop +  * **Monitor Serial ​(115200 baud)** — trimitere comenzi si verificare mesaje de stare
-  * **Monitor Serial** — debugging USART in timp real+
  
 ==== Librarii folosite ==== ==== Librarii folosite ====
- 
-=== Firmware (C / avr-gcc) === 
  
 ^ Librarie ^ Sursa ^ Rol ^ ^ Librarie ^ Sursa ^ Rol ^
-avr/io.h | avr-libc (built-inAcces la registrele I/O ale ATmega324P ​+Wire.h | Arduino ​built-in | Comunicare I2C intre ESP32 si LCD 
-avr/​interrupt.h ​avr-libc (built-in) ​Gestionarea intreruperilor hardware ​+LiquidCrystal_I2C ​Library Manager ​Control display LCD 2004 I2C 
-util/​delay.h ​avr-libc (built-inDelay-uri de initializare ​+Arduino ESP32 LEDC ESP32 built-in | Generare PWM hardware pentru buzzer ​
-Driver SSD1306 I2C open-source adaptat ​Initializare display si afisare text |+attachInterrupt() ​Arduino built-in Intrerupere pe GPIO4 pentru detectarea apasarii butonului ​|
  
-=== Aplicatie Desktop (Python) ​===+==== Algoritm de functionare ====
  
-^ Librarie ^ Rol ^ +Programul ruleaza pe ESP32 si este organizat sub forma unui automat finit de stari. Sistemul porneste in starea **IDLE**, unde asteapta comanda START primita ​prin USB-Serial. Dupa primirea comenziiintra in starea **WAITING**,​ unde genereaza un delay pseudo-aleator intre 1 si 4 secunde. In aceasta perioada, daca utilizatorul apasa butonul, sistemul detecteaza un **false start**.
-| pyserial | Comunicare seriala cu microcontrollerul ​prin USB-UART | +
-| PyQt5 | Interfata grafica (ferestrebutoane, tabele) | +
-| matplotlib | Grafic evolutie timp de reactie pe sesiune | +
-| csv | Export rezultate ​in format CSV |+
  
-==== Algoritm ​de functionare ====+Dupa expirarea delay-ului, sistemul intra in starea **SIGNAL**, activeaza LED-ul si buzzer-ul si salveaza momentul ​de start folosind functia **millis()**. Cand utilizatorul apasa butonul, intreruperea pe GPIO4 seteaza un flag, iar in loop() se calculeaza timpul de reactie ca diferenta dintre momentul apasarii si momentul semnalului.
  
-Sistemul functioneaza ​pe baza unui automat cu 5 stari. La primirea comenzii S pe USART, se genereaza un delay aleator (LFSR 1-4s). Dupa expirarea delay-uluiLED-ul si buzzer-ul sunt activate simultan, Timer1 porneste cronometrarea. Intreruperea externa INT0 (buton) opreste timer-ul si calculeaza timpul de reactie. Daca butonul e apasat inainte de semnal, se detecteaza false start.+Rezultatul este afisat ​pe LCD 2004 I2C si transmis prin Serial sub forma `RESULT:<​ms>​`. Dupa cateva secundesistemul revine automat in starea IDLE.
  
 ==== Automat de stari ==== ==== Automat de stari ====
Line 116: Line 115:
 Sistemul are 5 stari: Sistemul are 5 stari:
  
-  * **IDLE** — asteapta comanda ​S de la aplicatie ​prin USART +  * **IDLE** — asteapta comanda ​START prin Serial; LCD afiseaza mesajul de asteptare 
-  * **WAITING** — genereaza delay aleator ​cu LFSR, Timer1 numaraINT0 activ pentru detectie false start +  * **WAITING** — genereaza delay aleator ​1-4sLCD afiseaza "​Gata..."​ si "Nu apasa inca!" 
-  * **SIGNAL** — emite LED buzzer, Timer1 restartat pentru masurareasteapta apasare buton INT0 +  * **SIGNAL** — activeaza ​LED-ul si buzzer-ulLCD afiseaza "​GO!"​ 
-  * **RESULT** — calculeaza ​si trimite ​timpul ​prin USART, afiseaza pe OLED +  * **RESULT** — calculeaza timpul ​de reactieil afiseaza pe LCD si il trimite prin Serial 
-  * **FALSE_START** — buton apasat ​inainte de semnal; avertisment sonor + USART + revenire la IDLE+  * **FALSE_START** — detecteaza apasarea prea devreme a butonului, emite 3 beep-uri si afiseaza mesaj de eroare 
 + 
 +==== Comenzi Serial ==== 
 + 
 +^ Comanda ^ Directie ^ Efect ^ 
 +| START | Utilizator -> ESP32 | Porneste o runda noua | 
 +| RESET | Utilizator -> ESP32 | Reseteaza sistemul in starea IDLE | 
 +| RESULT:<​ms>​ | ESP32 -> Serial Monitor | Trimite timpul de reactie in milisecunde | 
 +| FALSE_START | ESP32 -> Serial Monitor | Semnaleaza apasarea butonului ​inainte de semnal ​
 +| STATE:<​stare>​ | ESP32 -> Serial Monitor | Afiseaza starea curenta a sistemului |
  
 ==== Surse si functii principale ==== ==== Surse si functii principale ====
  
-  * usart_init() — configurare registre UBRRactivare TX/RX +  * **setup()** — initializeaza Serialpini, LED, buzzer, I2C, LCD si intreruperea pe buton 
-  * usart_send_int() — trimite numarul ca sir de caractere prin USART +  * **loop()** — citeste comenzile Serial si gestioneaza tranzitiile automatului ​de stari 
-  * timer1_start() / timer1_get_ms() — control cronometru hardware +  * **showIdle()** — trece sistemul in starea IDLE si afiseaza mesajul initial pe LCD 
-  * pwm_buzzer_beep() — ton PWM pe buzzer ​la frecventa data +  * **startWaiting()** — genereaza delay-ul aleator si pregateste sistemul pentru semnal 
-  * i2c_init() / oled_print() — driver display I2C +  * **startSignal()** — activeaza LED-ul si buzzer-ul si porneste cronometrul 
-  * lfsr_rand() — generator pseudo-aleator pe 16 biti +  * **showResult(ms)** — afiseaza timpul de reactie pe LCD si il trimite prin Serial 
-  * ISR(INT0_vect) — intrerupere ​buton: oprire timer sau detectare false start+  * **goFalseStart()** — trateaza cazul in care butonul este apasat prea devreme 
 +  * **onButtonPress()** — rutina de intrerupere pentru buton, cu debounce software de 50ms 
 +  * **resetToIdle()** — reseteaza sistemul la starea initiala 
 + 
 +==== Detalii de implementare ==== 
 + 
 +Butonul este conectat pe **GPIO4** si este configurat cu **INPUT_PULLUP**,​ astfel incat pinul este in stare HIGH in repaus si trece in LOW cand butonul este apasat. Detectia se face prin intrerupere ​pe front descrescator,​ folosind `attachInterrupt(digitalPinToInterrupt(PIN_BUTTON),​ onButtonPress,​ FALLING)`. 
 + 
 +Pentru evitarea citirilor multiple cauzate de zgomotul mecanic al butonului, in rutina de intrerupere se foloseste un debounce software de 50ms. Variabila `buttonPressed` este declarata `volatile`, deoarece este modificata in ISR si citita in functia `loop()`.
  
-==== Aplicatie Desktop ====+Buzzer-ul pasiv este controlat cu PWM hardware prin modulul **LEDC** al ESP32. Pentru semnalul de start se foloseste o frecventa de 1000Hz, iar pentru false start se emit 3 beep-uri scurte la 300Hz. La finalizarea unei probe valide, sistemul emite un beep scurt la 1500Hz.
  
-Interfata grafica ofera butoanele Start proba, Stop sesiune ​si Export CSV. Comunicarea seriala ruleaza pe un thread separat ​pentru ​a nu bloca UI-ulLa fiecare proba finalizata, aplicatia adauga rezultatul in tabelactualizeaza statisticile (medieminimmaxim) ​si graficul matplotlib.+Display-ul LCD 2004 I2C este controlat prin magistrala I2C folosind pinii **GPIO21** pentru SDA si **GPIO22** ​pentru ​SCLPe LCD sunt afisate mesajele corespunzatoare fiecarei stari: asteptarepregatiresemnalrezultat ​si false start.
  
 ===== Rezultate Obtinute ===== ===== Rezultate Obtinute =====
  
-  * Sistem functional end-to-end: buton ATmega324P USART aplicatie desktop +  * Sistem functional end-to-end: buton -> ESP32 -> LCD 2004 I2C / Serial Monitor 
-  * Precizie masurare timp de reactie: 4 microsecunde (limitata ​de rezolutia Timer1 la 16MHz/64) +  * Masurare a timpului ​de reactie ​cu rezolutie ​de 1 milisecunda folosind millis(
-  * Latenta USART sub 5ms intre apasare buton si afisarea rezultatului in aplicatie +  * Detectie false start functionala ​prin intreruperea de pe GPIO4 
-  * Detectie false start functionala ​in toate scenariile testate +  * Feedback vizual prin LED si feedback sonor prin buzzer pasiv controlat PWM 
-  * Display ​OLED afiseaza ​stari stabil, fara artefacte vizuale+  * Display-ul LCD 2004 I2C afiseaza ​starile sistemului si rezultatul final pe 4 randuri 
 +  * Reset automat dupa afisarea rezultatului sau dupa detectarea unui false start
  
 ===== Concluzii ===== ===== Concluzii =====
  
-  * Utilizarea ​Timer1 ​pe 16 biti cu prescaler 1/64 ofera o rezolutie de ~4 microsecunde, suficienta pentru masurarea timpului de reactie uman. +  * Utilizarea ​functiei millis() ​pe ESP32 ofera o rezolutie de 1ms, suficienta pentru masurarea timpului de reactie uman. 
-  * Arhitectura FSM (automat de stari) s-a dovedit ​esentiala — o implementare liniara ar fi ratat evenimentele de intrerupere sau ar fi blocat comunicatia USART+  * Arhitectura FSM (automat de stari) s-a dovedit ​utila pentru separarea clara a etapelor: asteptare, semnal, rezultat si false start
-  * Generatorul LFSR produce o distributie uniform imprevizibila a delay-ului de startsimplu ​de implementat in C pur+  * ISR-ul pe GPIO4 cu debounce software ​de 50ms permite detectarea rapida a apasarii butonului si reduce efectul zgomotului mecanic. 
-  * Provocarea principala: variabilele partajate ​intre main loop si ISR necesita declarare ​volatile.+  * Display-ul LCD 2004 I2C permite afisarea locala a starilor si rezultatuluifara a depinde ​de o aplicatie externa. 
 +  * PWM-ul hardware LEDC al ESP32 permite controlul buzzer-ului fara a bloca permanent executia programului
 +  * Provocarea principala ​a fost sincronizarea corecta ​intre intreruperea butonului ​si logica principala din loop(), prin folosirea variabilelor ​volatile.
  
 ===== Jurnal ===== ===== Jurnal =====
  
 ^ Data ^ Activitate ^ ^ Data ^ Activitate ^
-| 2026-05-05 | Alegerea temei, documentare ​datasheet ATmega324P ​|+| 2026-05-05 | Alegerea temei, documentare ​ESP32 DevKit V1 |
 | 2026-05-07 | Achizitie componente | | 2026-05-07 | Achizitie componente |
-| 2026-05-09 | Montaj breadboard, testare ​USART +| 2026-05-09 | Montaj breadboard, testare ​Serial ​
-| 2026-05-11 | Implementare ​Timer1 + INT0, masurare timp de reactie | +| 2026-05-11 | Implementare ​FSM, masurare timp de reactie ​cu millis() ​
-| 2026-05-13 | Implementare PWM buzzer + LED, testare false start | +| 2026-05-13 | Implementare PWM buzzer ​(LEDC) ​+ LED, testare false start | 
-| 2026-05-15 | Implementare driver I2C + OLED SSD1306, integrare FSM | +| 2026-05-15 | Implementare driver ​LCD 2004 I2C, integrare FSM complet ​
-| 2026-05-17 | Scriere aplicatie Python + PyQt5, grafic matplotlib ​+| 2026-05-17 | Testare comenzi Serial START/RESET si afisare rezultat pe LCD 
-| 2026-05-19 | Testare end-to-end, ​debugging ​+| 2026-05-19 | Testare end-to-end: LED, buzzer, butonLCD si Serial Monitor ​
-| 2026-05-21 | Documentatie OCW, scheme ​bloc, poze montaj final |+| 2026-05-21 | Documentatie OCW, scheme, poze montaj final |
  
 ===== Bibliografie / Resurse ===== ===== Bibliografie / Resurse =====
  
-  - [[https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega324P.pdf|Datasheet ATmega324P]] +  - [[https://docs.espressif.com/projects/​esp-idf/en/latest/​esp32/|ESP32 Technical Reference Manual]] 
-  - [[https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf|Datasheet SSD1306 OLED Controller]] +  - [[https://github.com/espressif/arduino-esp32|Arduino ESP32 GitHub]] 
-  ​[[https://​pyserial.readthedocs.io|pyserial documentatie]] +  - [[https://github.com/johnrickman/LiquidCrystal_I2C|LiquidCrystal_I2C librarie]]
-  - [[https://www.riverbankcomputing.com/software/​pyqt/|PyQt5 documentatie]] +
-  - [[https://​en.wikipedia.org/​wiki/​Linear-feedback_shift_register|Linear-feedback shift register Wikipedia]]+
   - Cursurile PM - Lab 1 USART, Lab 2 Intreruperi Timere, Lab 3 PWM, Lab 6 I2C   - Cursurile PM - Lab 1 USART, Lab 2 Intreruperi Timere, Lab 3 PWM, Lab 6 I2C
pm/prj2026/bianca.popa1106/cezar_andrei.enciu.1778326346.txt.gz · Last modified: 2026/05/09 14:32 by cezar_andrei.enciu
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