Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Embedded System Design using UML State Machines
Rating: 4.5 out of 5(842 ratings)
8,672 students

Embedded System Design using UML State Machines

Learn to implement event-driven embedded applications using simple and hierarchical UML state machine approach
Last updated 7/2026
English
AfrikaansArabic

What you'll learn

  • Event driven programming paradigm
  • Flat and hierarchical state machines (Simple FSMs and H-FSMs)
  • UML state machine semantics and state chart drawing
  • Converting UML statecharts into executable C/C++ code
  • Action objects design approach
  • Different state machine implementation strategies
  • Nested switch implementation of state machines
  • State table approach to implementing the state machines
  • State-Handler approach to implementing the state machines
  • Usage of function pointers in 'C'
  • Hands-on projects using simple FSM and HSMs
  • Step by step code development
  • Graphically modeling event-driven embedded application using UML statecharts modeler tools
  • Working with QP™ embedded real-time framework and QM™ tool of Quantum Leaps, LLC to draw and implement the HSMs

Course content

11 sections97 lectures12h 15m total length
  • About the instructor0:18
  • Important Note0:46
  • Course Repository and Slides0:04
  • Introduction to Finite State Machine7:50

    Explore finite state machines and UML state machines to model reactive software with states, events, transitions, and outputs; visualize with state charts and leverage code generation tools.

  • Mealy and Moore machine9:08

    Explore Mealy and Moore state machines, showing how outputs attach to transitions versus states, with a light-control example and notes on entry actions in UML state machines.

  • Mealy and Moore State Transition Table5:04

    Examine Mealy and Moore state transition tables, showing outputs from present states and events in a light control example, and introduce Harel charts and UML state machines.

  • Exercise-001 LED control Mealy machine example12:13

    Explore a light control Mealy machine using an Arduino Uno, PWM dimming via analogWrite, and serial host commands to turn an LED on or off.

  • Exercise-001 LED control Mealy machine implementation part 124:08

    Define LED state and events with C enums, implement a Mealy machine using a nested switch, and control LED brightness via PWM on Arduino.

  • Exercise-001 LED control Mealy machine implementation part 26:55

    Learn to receive host data via serial on Arduino, use Serial.available and Serial.read to emit on and off events, and drive a led with a Mealy state machine.

  • Exercise-002 LED control Moore machine implementation4:42

    Demonstrate implementing a light control UML state machine using a Moore machine, detailing entry actions, state transitions, and run_entry_action, with comparisons to the previous Mealy approach.

Requirements

  • Basics of 'C' or 'C++' programming

Description

Learn the fundamentals of simple and hierarchical UML state machines in easy steps

The course emphasizes project-based learning, learning by doing.

The goal of this course is to introduce an event-driven programming paradigm using simple and hierarchical state machines.

After going through this course, you will be trained to apply the state machine approach to solve your complex embedded systems projects.

Some of the highlights of this course are as below

you will learn,

1) UML(Unified Modeling Language) state machine semantics like simple/composite states, events, signals, transitions, entry/exit actions, guards, pseudo-states, etc

2) Drawing UML state machines using graphical modeling tools such as Astah and QM™ modeling tool

3) Implementing embedded applications using Hierarchical state machines and Active objects design approach

4) Using QP™ real-time embedded framework and QP™-Nano Arduino library in your embedded projects

5) Active objects

6) Hands-on event-driven project implementation and testing on Arduino UNO board (Please check the preview videos)


Hardware:

If you want to test the code developed on the target hardware, you need the below-mentioned boards and components

1. Arduino UNO(1)

2. 16x2 character LCD (1)

3. Pushbuttons (3)

4. 10KΩ resistors (3)

5 . 220Ω resistor (3)

6. 100KΩ Potentiometer (1)

7. Arduino buzzer (1)

8. Jumper wires-M2M


Software:

Installation procedure for important software are covered in this course

1. Arduino IDE (Free and Open source )

2. Microsoft visual code (Free)

3. PlatformIO VS code extension(Free and Open source )

4. QM™ modeling tool by Quantum Leaps, LLC (Free GPL version)

5. Astah by Change Vision, Inc.(Trial version)


Learning order of FastBit Embedded Brain Academy Courses,

If you are a beginner in the field of embedded systems, then you can take our courses in the below-mentioned order.
This is just a recommendation from the instructor for beginners.

1) Microcontroller Embedded C Programming: absolute beginners(Embedded C)

2) Embedded Systems Programming on ARM Cortex-M3/M4 Processor(ARM Cortex M4 Processor specific)

3) Mastering Microcontroller with Embedded Driver Development(MCU1)

4) Mastering Microcontroller: TIMERS, PWM, CAN, RTC,LOW POWER(MCU2)

5) Mastering Microcontroller: STM32-LTDC, LCD-TFT, LVGL(MCU3)

6) Embedded System Design using UML State Machines(State machine)

7) Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)

8) ARM Cortex M Microcontroller DMA Programming Demystified(DMA)

9) STM32Fx Microcontroller Custom Bootloader Development(Bootloader)

10) Embedded Linux Step by Step using Beaglebone Black(Linux)

11) Linux device driver programming using Beaglebone Black(LDD1)


Other programming courses

1) Master The Rust Programming Language : Beginner To Advanced

Who this course is for:

  • Anyone who wants to learn and explore embedded system programming
  • Students and working professionals