
The course content is roughly divided by the section topics.
Most sections have the following structure:
Hi, and thanks for taking this course :)
This video describes the recommended knowledge and material to take the most out of this course.
Explore why life beyond Arduino matters and learn how microcontrollers work on hardware and software, including sensors, actuators, and building your own controllers from algorithms rather than library functions.
Distribute focus across hardware, software, and demos; emphasize hardware as the core, teach digital control algorithms in software, illustrate the platform with working demos, quizzes, and suggested projects.
Explore the typical microcontroller architecture, including the CPU, memory, ADC, timer, GPIO, and serial interfaces, and the parallelism between modules and the CPU within a bus architecture.
Explore Arm Cortex operational modules, including CPU, debug unit, two-level bus with the advanced high speed bus and advanced peripheral bus, GPIO, serial ports, timers, USB, and system controls.
Examine actual block diagrams of microcontrollers, including LPC1114 and Arm Cortex-M0/M4F, detailing cores, buses, memory controllers, and peripherals like touch sensing, USB, PWM, ADC, DAC, and temperature sensors.
Explore how a switch matrix multiplexes many signals into few pins by assigning multiple functions per pin, demonstrated with an eight-pin LPC810 and a twenty-pin variant.
Multiplexers act as bidirectional switches that map multiple internal signals to a single pin, controlled by a setup register. This reduces pin count and enables flexible pin usage.
Compare beginner and advanced embedded development tools, outlining reliability, customization, and hardware support. The lecture advocates advanced tools for professionals, noting debuggers, simulators, and flexibility, despite higher cost and complexity.
Turn on and off LEDs via a digital output, calculate series resistor values, and understand current, polarity, and brightness, while noting that LEDs and resistors aren’t a silver bullet.
Learn about multicolor leds, including bi-color and tri-color rgb designs, and common anode, common cathode, and antiparallel topologies. Use outputs with current-limiting resistors to safely light single or multiple leds.
Explore pulse width modulation and periodic pulses, focusing on rectangular signals and timing that defines high and low states in microcontroller outputs, including power control and analog signal generation.
Understand rectangular signals by defining period, pulse width, and duty cycle; the period is denoted by D, and the duty cycle equals pulse width over the period, 0–100%.
Learn how pulse width modulation controls LED brightness by varying duty cycle while keeping a constant period, enabling efficient power control and perceived brightness adjustments.
Drive a dc motor with a pwm signal through a power driver; high state powers the motor from the supply, low state stops it, and the duty cycle sets speed.
Pulse-width modulation uses duty cycle to set average voltage, five volts at 75% equals 3.75 volts; a low-pass filter converts it to an analog waveform for audio tones and DTMF.
Explore how to drive led arrays, from seven-segment displays to multi-digit matrices, using column-row scanning, common anodes/cathodes, and resistors to light specific leds.
Explore seven segment displays, comparing common anode and common cathode wiring and learning resistor requirements for each segment. Demonstrate multiplexing a multi-digit display to show numbers via rapid digit cycling.
Examine a five-digit scan algorithm for seven-segment displays using a digits array, modulo arithmetic, and a decode function to flash digits with persistence of vision.
Learn to represent decimal numbers with fixed or floating point, map them to multi-digit seven-segment displays, and control the decimal point via scan algorithms and persistence of vision.
The BASIC Stamp 2 runs only an interpreter, delivering about 4,000 basic instructions per second at 20 megahertz, with 32 bytes RAM, 2 kilobytes of EPROM, and no interrupts.
Explore a stem-to-module hardware demo driving a four-digit seven-segment display using pins p0–p15, with pins 8–15 as segments, a push button counter from 19997 to 20000, and cathode wiring.
Explore the scan function in PBASIC by detailing directives, direction and port registers, and how the algorithm uses a subroutine to multiplex common cathode displays with a one-millisecond delay.
Explore the decode subroutine and a live demo, using division by ten and a lookup table to drive a seven-segment display with hexadecimal patterns for digits on the display.
Explore how to drive a 7-segment display using GPIO pins, wiring cathodes and segments across multiple ports, with a push button input and a USB programmer interface.
Explore the launchpad development software and its energia-based arduino clone workflow, highlighting beginner usability issues, buggy error reporting, and misaligned line references that hinder learning.
Learn to implement a c scan function for a seven-segment display on the tvc launch pad, using setup and loop, digit/segment mappings, a decode lookup, and a pushbutton edge trigger.
Decode function retrieves a digit from a lookup table to drive seven-segment patterns. The display writes each pattern bit to outputs, avoiding flicker despite an inefficient method.
Explore how a polling algorithm reads GPIO input and detects falling edges, showing why short button presses can be missed due to the scanner's delay and input-read rate.
The original scan algorithm is blocking and slow on low-end CPUs, causing display flicker; use a lookup table for powers of ten and seven-segment patterns to reduce divisions and delays.
A better scanning algorithm uses a decode function to precompute seven-segment patterns via a lookup table for the digits, enabling fast index-based updates and fewer in-loop calculations.
Explore an interrupt-driven implementation using a timer interrupt service routine to periodically update a multi-digit display and, every five cycles, refresh the segments.
Explore a better approach using two periodic interrupts to update digits and pattern separately, leveraging timer interrupts, interrupt service routines, and time-sharing to create smooth, parallel-like display updates.
In this course you will learn that there's more to life than the Arduino Uno and that there's probably a better way to do what you've been doing with microcontrollers. Yes, Arduino is an excellent platform to get you started, but you will learn that Arduino is not part of the day to day electronics you use like your TV, microwave oven or car dashboard.
Do you know how the supporting hardware in a microcontroller work? Well, you will learn that here. Also as a bonus you will learn how the functions in dumbed-down libraries work.
This is not exactly a hands-on course, not if you don't want it to be. There are no promises on the projects you’ll make because I won’t force you to build something you didn’t choose to. However, I strongly recommend that you code along. Several microcontroller development platforms are showcased, but you should follow the examples with your own microcontroller.
You should know that most lectures have the following elements:
-Recommended Material
-“Recall” Slide
-Actual lecture content
-Live Demo
- and Quizzes