Arduino Microcontroller Programming¶
The Arduino has been a popular microcontroller platform since 2005 and has grown to include a vast variety of devices. This course previously used the Arduino Uno as our primary platform for embedded computing, but has since shifted to using the newer CircuitPython devices.
Exercises¶
The exercises are intended to be quick, simple introductions to technique. Part of the exercise is absorbing a set of technical terms; the meaning will become apparent in time through immersion in practice.
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.
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.
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.
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.
Arduino Sample Code¶
We sometimes also used Arduino microcontrollers. Arduino programs are called ‘sketches’. The following examples are used in the Arduino tutorials.
- Blink Arduino Sketch
- Fade Arduino Sketch
- SoftBlink1 Arduino Sketch
- SoftBlink2 Arduino Sketch
- ReadSwitchInput Arduino Sketch
- ReadAccelerometer Arduino Sketch
- SensorFade Arduino Sketch
- ReadSonar Arduino Sketch
- ServoSweep Arduino Sketch
- SoundDemo Arduino Sketch
- WheelDrive Arduino Sketch
- StepperSweep Arduino Sketch
- EventLoopDemo Arduino Sketch
- MusicSequenceDemo Arduino Sketch
- InputHysteresis Arduino Sketch
- InputMatcher1 Arduino Sketch
- InputMatcher2 Arduino Sketch
- InputMatcher3 Arduino Sketch
- OneInOneOutASCII Arduino Sketch
- WS2801LED Arduino Sketch
- Adafruit_PWM Arduino Sketch
- MPU6050_DMP6 Arduino Sketch
- PinballGame Arduino Sketch
- EventBusyBox Arduino Sketch
- CKS-Shield-1-Test Arduino Sketch
- RemoteStation Arduino Sketch
- RemoteUserInterface Arduino Sketch
- RockPaperScissors Arduino Sketch
- FilterDemos Arduino Sketch
- ClassifierDemo Arduino Sketch
- Lecture Sample Code
- Arduino Coding Style Guide
- Signal Processing