Starting Concept List
This is a starting concept list, not a final learning graph. It was generated by scanning
all existing content in this repository — the current lessons in docs/lessons/, the top-level
pages (getting-started.md, about.md, parts-lists.md, glossary.md, references.md), and
the example MicroPython programs in src/ — to inventory the concepts already present anywhere
in the project, whether or not they have a finished lesson page yet.
The goal of this book is expanding from a personal notes collection into a full textbook that teaches students to draw many robot face styles on two target displays:
- A 128x64 monochrome OLED display (SSD1306, already the primary focus of the current lessons)
- A 240x240 color round display (GC9A01, already used in several
src/example programs but not yet covered by any lesson page)
Concepts below marked (code only) exist in the src/ example programs but are not yet
explained in a docs/lessons/ page. These are gaps to close as the book expands. Everything else
already appears in a lesson, the glossary, or a top-level content page.
Use this list as an input to a course description and then to the learning-graph-generator process, which will expand it toward a complete concept graph with dependencies.
1. Hardware Platforms & Components
- Raspberry Pi Pico
- RP2040 Microcontroller
- Cytron Maker Pi RP2040
- 128x64 Monochrome OLED
- 240x240 Color Round Display (code only)
- SSD1306 Display Driver
- GC9A01 Display Driver (code only)
- SPI Interface
- I2C Interface (code only)
- Solderless Breadboard
- M-F Jumper Wires
- Momentary Push Button
- Potentiometer
- Rotary Encoder
- Smart Car Chassis
- Time-of-Flight Sensor (code only)
- NeoPixel LED (code only)
- PWM Signal (code only)
2. Software Tools & Environment
- MicroPython
- Thonny IDE
- FrameBuf Module
- MicroPython REPL
3. Display Fundamentals
- Screen Coordinate System
- Origin at Upper-Left
- X Direction
- Y Direction
- Pixel
- Frame Buffer
- Display Resolution
- Monochrome Color Model
- RGB565 Color Model (code only)
- color565 Function (code only)
4. Basic Drawing Primitives
- fill() Method
- hline() Method
- vline() Method
- line() Method
- rect() Method
- fill_rect() Method (code only)
- ellipse() Method
- Quadrant Fill Codes
- poly() Method
- Point Array for Polygons
- Unsigned Byte Array Type
- scroll() Method
- blit() Method
- Transparent Color Key
- Blit Palette Mapping
- show() Method
5. Face Anatomy & Layout
- Face Outline
- Drawing Constants
- Eye Placement
- Eye Size
- Pupil
- Eyebrow Shape
- Mouth Shape
- Bottom-Half Mouth Curve
- draw_face() Function
6. Facial Expression & Emotion Design
- Ekman's Universal Emotions
- Happy Expression
- Sad Expression
- Angry Expression
- Afraid Expression
- Surprised Expression
- Disgusted Expression
- Contempt Expression
- Sleepy Expression
- Inside Out Emotions
- Emotion Recognition Accuracy
7. Animation & Interaction
- Eye Scanner Animation
- Pupil Movement
- Blinking Animation
- Animation Loop
- Bit Shifting for Powers of Two
- Mode State Machine (code only)
- Button Interrupt Handler (code only)
- Button Debounce (code only)
- Multi-Mode Menu (code only)
- Rotary Encoder Input
- Potentiometer Input
- Dual-Core Processing
8. Color Display Techniques
- Color Wheel Function (code only)
- Named Color Constants (code only)
- Color Cycling Animation (code only)
- Round Display Layout (code only)
9. Performance & Advanced Techniques
- Draw Time Benchmarking (code only)
- ticks_us Timing (code only)
- Bitmap to Byte Array Conversion (code only)
- MONO_HLSB Format (code only)
- Sprite Blitting for Speed (code only)
- Circle Bitmap Sprite (code only)
10. Testing & Prototyping
- Software Display Emulator (code only)
- Turtle Graphics Prototype (code only)
11. Course & Project Context
- Computational Thinking
- Abstraction
- Modularity
- Function Parameters
- Low-Cost Robotics Kit
Notes on Coverage Gaps
Scanning the current content surfaced a few things worth flagging before writing a course description:
- Color display has no lessons yet. All GC9A01 / 240x240 / RGB565 concepts come only from
src/example programs (color-wheel-cycle.py,color-list-cycle.py,lib/gc9a01.py). A parallel lesson track for the color display will need to be written. - Interaction lessons are stubs.
docs/lessons/interactions.mdonly has headings for "Eye Pupil Movement" and "Blinking" with no content.docs/lessons/multiple-threads.mdanddocs/lessons/blit-commands.mdare similarly thin or empty, even though working code for dual-core use, button interrupts, and a mode state machine already exists insrc/project-box/. - Sensor extensions exist in code but aren't part of the drawing curriculum. The time-of-flight sensor and NeoPixel examples are tangential to face-drawing and may belong in an optional "extensions" section rather than the core learning path.
- The glossary is thin. Only Blit, Ellipse, and RP2040 have entries; most terms above have no definition yet.