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?