Lab 6.1: Control comportamental cu Automate Finite – Button-LED
Scopul lucrării
Familiarizarea cu implementarea automatelor finite (FSM – Finite State Machine) pentru controlul comportamental al unui sistem simplu, utilizând un buton ca eveniment de intrare și un LED ca ieșire controlată.
Obiectivele lucrării
Înțelegerea principiilor de funcționare ale automatelor finite în aplicații embedded.
Proiectarea și implementarea unui FSM pentru controlul unui LED între două stări (ON/OFF), prin intermediul unui buton.
Utilizarea interfeței STDIO (serial sau LCD) pentru raportarea stării curente a automatului.
Dezvoltarea unei aplicații modulare, cu logica FSM separată într-un fișier dedicat.
Definire Problemă
Să se realizeze o aplicație embedded care implementează un automat finit pentru controlul unui LED, în funcție de apăsarea unui buton.
Stările automatului:
Stare 0 (OFF): LED-ul este stins.
Stare 1 (ON): LED-ul este aprins.
Tranziția între stări se va face la fiecare apăsare validă a butonului (cu debounce implementat).
Afișarea stării curente se va realiza în timp real prin:
interfața serială (printf) sau
LCD (2x16 sau 4x20), utilizând biblioteca STDIO/LCD.
Materiale și resurse
Componente hardware:
Microcontroler (ESP32, STM32 sau Arduino)
Buton (cu rezistență de pull-up sau pull-down)
LED și rezistor de 220Ω
LCD (opțional, pentru afișare alternativă)
Breadboard, cabluri de conexiune
Sursă de alimentare (USB)
Resurse software:
Visual Studio Code cu PlatformIO
Biblioteci: STDIO (Serial), LiquidCrystal_I2C
Simulator hardware (opțional: Proteus)
Recomandări
A se utiliza interfața serială sau LCD cu servicii STDIO pentru raportarea stării curente și a tranzițiilor automatului.
Reutilizați modulele dezvoltate în lucrările anterioare pentru gestionarea butonului, LED-ului și interfeței de afișare.
Revizuiți resursele teoretice predate la curs privind automatele finite deterministe și diagramele de stare.
Pontaj
Cerințe obligatorii:
Respectarea structurii modulare a proiectului.
Prezentarea schemelor bloc, a FSM-ului (diagrama de stări) și a interfețelor hardware-software.
Respectarea formatului raportului conform normelor UTM.
Notare:
50% – Funcționarea corectă a automatului finit cu 2 stări (ON/OFF)
10% – Afișarea stării curente prin STDIO (Serial/LCD)
10% – Prezentarea diagramei de sistem, a FSM-ului și a interfețelor HW/SW
10% – Prezentarea schemelor electrice și diagramelor bloc
10% – Demonstrarea funcționării fizice a soluției
10% – Implementarea unui comportament adițional improvizat (ex.: stare intermediară – LED intermitent, timeout automat, reset, stare „wait” etc.)
NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției și implementarea comportamentului adițional improvizat care implică minim 3 stări.
10% penalizare pentru fiecare săptămână întârziere față de termenul stabilit.
Întrebări de control
Ce este un automat finit și care sunt elementele sale (stări, tranziții, evenimente)?
Cum se implementează un FSM în limbaj C/C++ pentru microcontrolere?
Ce este debouncing-ul și de ce este necesar în gestionarea unui buton?
Cum se poate monitoriza starea automatului în timp real prin interfața serială sau LCD?
Care sunt avantajele separării logicii FSM într-un modul dedicat?
Ce beneficii aduce extinderea FSM-ului cu o stare suplimentară în funcționalitatea aplicației?