The course text includes has many exercises intended to familiarize you with the lab, basic electronic equipment, and basic programming. These are essential for developing the vocabulary and skills to fulfill the projects. They are generally reviewed on a pass/fail basis.
The initial exercises are intended to be quick, simple introductions. Part of the exercise is absorbing a set of technical terms; the meaning will become apparent in time through immersion in practice.
Anyone who completes an exercise easily should consider undertaking more of the optional challenge activities listed at the end of most exercises.
Raspberry Pi Pico¶
Servo Motion with the Pico. Introduction to hobby servos and programming practice in CircuitPython.
Digital I/O with the Pico. Introduction to digital input and output in CircuitPython.
Analog Sensing with the Pico. Introduction to analog-to-digital conversion in CircuitPython.
Marble Run Tile. Parametric 3D design of a laser-cuttable marble run.
Actuated Marble Run Tile. Marble run tile including hobby servo actuation.
Marble Fidget Toy. Handheld marble device fabricated using 3D printing.
Reactive Marble Run Tile. Marble run tile incorporating single-bit sensing.
Motor Marble Run Tile. Marble run tile incorporating DC gearmotors.
Marble Game. Playable electromechanical game using marbles.
Marble Music. Musical instrument using marbles.
Introduction to Tinkercad Circuits. Getting started with Tinkercad, creating an Arduino sketch.
Resistive Circuits in Tinkercad. Introduction to electronic theory in Tinkercad.
Melody Player in Tinkercad. Introduction to algorithmic music generation in Tinkercad.
Servo Motion in Tinkercad. Introduction to hobby servos and programming practice in Tinkercad.
Handheld Game in Tinkercad. Introduction to game design in Tinkercad.
Autodesk Fusion 360¶
Introduction to Fusion 360. Getting started with Fusion 360, creating and sharing a 3D model.
Marble Run in Fusion 360. Designing multi-component assemblies parametrically.
Arduino IDE and Programming¶
Arduino Introduction. Basic description, finding Arduino software.
Coding, Compiling, Deploying. Running several sample programs, modifying code.
Soft Blink. Introduce several programming fundamentals by fading the onboard LED.
Bench, Battery, Grid. Electrical safety, voltage measurement.
Continuity Tests. Resistance measurement.
Power Switch and LED. Voltage and current measurement, controlling current with a switch.
Voltage Divider Basics. Introducing Ohm’s Law via our essential analog circuit: the voltage divider.
Smoke a Resistor. Testing Ohm’s Law empirically by destroying a resistor.
Sensor Switch Basics. Applying the voltage divider to the simplest sensor: the switch.
Photocell Sensor. Applying the voltage divider to a light sensor.
LED Current Limiting. Applying the voltage divider to regulating LED current.
Reflective Photointerrupter. A sensor circuit with both current-limited LED and biased phototransistor.
Electrical Theory Practice. Paper self-test for solving basic circuits.
Arduino with Electronics¶
Read Switch Input. Read a switch input as a binary digital value.
Read Analog Accelerometer. Read a multi-channel sensor and explore calibration.
Sensor-Driven LEDs. Control LED brightness using sensor data.
Read Sonar. Measure distance with an ultrasonic ranger; explore time as an output variable.
Servo Sweep. Drive a servo motor along simple trajectories.
Metronome. User-controlled metronome.
Tactile User Interface. Multi-sensor user affordance.
Unipolar Drivers. Driving solenoids, relays, large lamps, and unidirectional DC motors.
Multi-channel Driver. Generate sound and vibration using a power driver.
H-Bridge DC Motor Driver. Driving DC motors in both directions at variable speed.
Stepper Motor Driver. Driving a stepper motor for precise open-loop motion.
Signals and Time¶
Please be sure to read the Summary Guide: Computation and Behavior section for a review of computational terminology and concepts. Please be sure to see the OneInOneOutASCII Arduino Sketch section for background on dividing a process between the Arduino and a laptop.
Event Loop Programming. Structuring software as event-loop time-slicing for executing multiple simultaneous tasks.
Resolution and Mapping. Using a smoothing filter for reducing noise in sampled analog input.
Music Sequencer. Demonstration of a state-machine interpretation of performance data with musical audio output.
Input Hysteresis. Introduces state transition diagrams.
Input Pattern Matching. Comparison of several canonical coding forms for state machines.
Please be sure to read the Summary Guide: Mechanism section for a review of mechanical terminology and concepts.
Clay Linkage. Making a four-bar linkage from air-drying clay.
Laser Cutting Features and Tolerances. Basic laser cutter design; introduction to engineering tolerance.
Mechanisms for One-Bit Sensing. Using mechanical elements effectively to apply switches as sensors.
Electromechanical Oscillation. Combining mechanical and electrical feedback to produce dynamics.
Interview Game. Getting to know each other.
Hand Choreography. Developing a domain-specific choreography language.
Network Party. Live networked interaction using custom tactile user interfaces.
Voltage Regulation. Creating stable power supply voltages.
Capacitance. Basic capacitor dynamics and simple RC timing circuit.
Op-Amp Level Translation. Applying gain and offset to analog signals.
Adafruit-PWM-I2C. Using an I2C bus for 16 channel of PWM actuation.
WS2801-LED-SPI. Using an SPI bus to drive digital LED modules.
MPU6050-IMU-I2C. Using an I2C Inertial Measurement Unit.
Getting Started on the Raspberry Pi. Preparing to apply a network-capable computer to physical computing.
Max Arduino Companion. Building a system combining Arduino and Max/MSP for laptop-based GUI and media processing.