Module 5 of 19
Module 5: Embedded programming
What the official assignment asks for, and what bare-minimum and exceptional work could look like.
Unofficial
Paraphrased from the Fab Academy 2026 class page, retrieved 24 Oct 2026. The official page is the authority and may have changed: read it on fabacademy.org.
What the official assignment asks for
Microcontroller architectures, toolchains, languages, development environments, serial communication and debugging.
Group assignment
- Demonstrate and compare the toolchains and development workflows for available embedded architectures.
Individual assignment
- Browse through the data sheet for a microcontroller.
- Write and test a program for an embedded system using a microcontroller to interact (with input and/or output devices) and communicate (with wired or wireless connections).
Extra credit (optional, as marked on the official page)
- Assemble the system.
- Try different languages and/or development environments.
Bare-minimum vs exceptional
Author's interpretation
Author's interpretation, not official Fab Academy grading. Use it to aim your work and check your documentation, and confirm what counts with your instructor.
Bare-minimum
- Group work: a comparison of the toolchains and workflows for at least two architectures, in your own words, with what you did and what differed in practice (setup, programming, debugging).
- Datasheet reading shown: name the microcontroller and quote the specific facts you used (pin functions, electrical limits, peripherals or registers) with the page or section.
- A program running on a microcontroller that both interacts with an input and/or output device and communicates over a wired or wireless link. The assignment names both, so show both.
- Evidence it works: the code in your repo, a photo or short video, and the serial or other output.
- A plain explanation of how the code works and which board, toolchain and settings you used.
Exceptional
- The official extras: the system assembled (running on a board you made) and more than one language or development environment tried, with an honest comparison.
- Going below the library: use timers, interrupts or registers directly where it matters, and show what you learned from the datasheet by doing it.
- A debugging story: something that failed, how you found the cause, and what you changed.
- Code that someone else can reuse: commented, with the exact build steps and versions, and files named clearly.
- A link to your final project: how this program becomes part of it.