Lab 6.1 Automate Finite - Button-LED
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?