Lecture and Demo Videos

All video content for the course is posted on the Creative Kinetic Systems YouTube channel. The following guide is intended to help you locate content on individual topics. It is organized by topic, but approximately follows presentation order.

Please note that specific videos may cater more to novices or to students with prior experience, so some will be assigned for everyone to study and some will be optional.


Course Overview

  1. Creative Kinetic Systems Channel Trailer. A brief hello.

  2. Welcome to Creative Kinetic Systems. Course introduction, IDeATe introduction, brief summary of scope and outcomes, intended audience, fundamental learning goals.

  3. CKS Style and Structure. Learning approach, synopsis (‘systems thinking’), semester schedule outline, remote learning, course kits.

  4. CKS Course Web Site.Main course site, daily agenda pages, Canvas, student WordPress site, Piazza.

  5. CKS Course Policies. Syllabus overview, mandatory participation, deadlines, safety, academic integrity, self-care.

Tinkercad Circuits

  1. Tour of Tinkercad Circuits. Orientation for the Autodesk Tinkercad Circuits simulator. LED-battery circuit, Arduino component, visual ‘block’ programming, Arduino C++ text programming.

  2. Tinkercad Breadboarding. Introduction to the solderless breadboard via Tinkercad. Circuit with battery, resistor, LED.

  3. Exercise: Resistive Circuits in Tinkercad. Companion video for the assigned exercise Exercise: Resistive Circuits in Tinkercad. Conversational walkthrough of electrical theory for seven sample circuits.

  4. Tinkercad Arduino Switch Input. Demonstration of Arduino input circuit using switch and pullup resistor on breadboard, Arduino program with conditional logic and LED output.

  5. Exercise: Servo Motion in Tinkercad. Walkthrough of Exercise: Servo Motion in Tinkercad. Discussion of servo command signal format, simple harmonic oscillators, and structuring programs around motion primitive functions.

  6. Exercise: Handheld Game in Tinkercad. Walkthrough of Exercise: Handheld Game in Tinkercad. Demonstration of the sample solution, discussion of creative possibilities for making a simulation of a handheld electronic game.

  7. Exercise: Handheld Game: Vocabulary. An optional addendum to the walkthrough of Exercise: Handheld Game in Tinkercad to explain some of the jargon from the exercise description in more detail.


  1. Electrical Theory Introduction. Current, voltage, resistance, Amperes, Volts, Ohms, circuits as graphs.

  2. Kirchhoff’s Laws, Ohm’s Law. Kirchhoff’s current law, Ohm’s Law, Kirchhoff’s voltage law, tools for elementary circuit analysis.

  3. Resistors and Voltage Dividers. Physical resistors, divider circuits, resistance ratios.

  4. Switch and LED Circuits. Switch input circuits, pull-up and pull-down resistors, LED output circuits, ballast resistors.

  5. Ultrasonic Range Sensor [9:24]. Demonstration of a HC-SR04 ultrasonic range sensor (sonar) with an Arduino.

  6. Reflective Photointerruptor [5:57]. Demonstration of a LTH-1550 reflective photointerruptor using an Arduino.

  7. Tilt Ball Switch [2:59]. Demonstration of a tilt ball switch and passive buzzer using an Arduino.

    1. planned: electronic component show and tell: breadboard, wires, etc.

  8. planned: Arduino board show and tell: board, connectors, switches, chips, cautions

  9. planned: physical breadboard layout and wiring

  10. planned: hobby servos: internal components, block diagram, feedback, wiring, mounting, power considerations, pulse code signals

  11. planned: electronics lab safety: static risk, chemical risk, voltage risk, eye safety

  12. planned: reading electronics data sheets

  13. planned: digital sensors: switches of all forms

  14. planned: analog sensors: photocells, microphones, accelerometers

Arduino Programming

  1. Introduction to the Arduino. Brief history of the Arduino, basic specifications, range of applications.

  2. Arduino Language Overview. Orientation to the Arduino dialect of C++.

  3. Arduino Essential Program Structures. Arduino setup(), loop() iteration, if-then, while iteration, for iteration.

  4. Arduino Digital I/O. Semantics of digital signals, Arduino digitalRead(), digitalWrite().

  5. Arduino Analog I/O. Arduino analogRead(), resolution, precision, analogWrite() and PWM.

  6. Arduino Time Measurement. Arduino timekeeping, clock resolution, millis(), micros(), and delay().

  7. Arduino Integrated Development Environment [10:06]. A tour of the software we use to program an Arduino.

Sample Code Walkthroughs

  1. Code Walkthroughs: Tones. Arduino tone production and musical tuning systems. Walks through lecture samples tones.ino, bit-bang-two-tone.ino, and scale.ino.

  2. Code Walkthroughs: Tones and Tables. Frequency and note tables in Arduino C++. Walks through lecture samples melody.ino and note-table.ino.

  3. Code Walkthroughs: Tones and Functions. Writing and using functions in Arduino C++. Walks through lecture sample arpeggio.ino.

  4. Code Walkthroughs: Processing Input while Waiting. Polling input while waiting in Arduino C++. Walks through lecture sample responsive-delay.ino.

  5. Code Walkthroughs: RockPaperScissors Event Loop. Polling loop structure for simultaneous processing asynchronous events from user input, game state transitions, and output animations. For code see RockPaperScissors Arduino Sketch.

  6. Code Walkthroughs: RockPaperScissors State Machines. Two programming idioms for specifying state machines. Walks through RockPaperScissors.ino example, shows the state variables, timing system, transition rules, and side effects. Introduces switch-case notation, enum notation, and state graph notation. For code see RockPaperScissors Arduino Sketch.

Programming Concepts

  1. possible: formal syntax versus programming idioms

  2. possible: control flow

  3. possible: data, operations, and variables

  4. possible: functions

  5. possible: conditionals, blocks

  6. possible: iteration

Arduino C++

  1. planned: C++ notation: functions, arguments, declarations

  2. planned: C++ data: numeric types, arrays

  3. planned: in depth: comparison with Python

  4. planned: serial data communication

  5. planned: in depth: walkthrough of compilation process

  6. planned: in depth: tour of the firmware source

  7. planned: in depth: tour of the ATMega328 architecture

Arduino IDE Application Software

  1. planned: launching, editing, compiling, reading documentation

  2. planned: syntax highlighting

  3. planned: downloading code, physically observing it run, resetting and restarting

  4. planned: using the Serial Monitor

Fusion 360

  1. Autodesk Fusion 360 Orientation. Brief overview of the Autodesk Fusion 360 3D modeling interface. Discusses the definitions of team, project, folder, file, browser, design history.

  2. Introduction to Parametric Design. Conceptual introduction to parametric 3D design in the context of Fusion 360. Discusses the ideas of design intent, design history, associative features, constructive solid geometry, designs, components, sketches, and joints.

  3. Parametric Part Design. Walkthrough of the parametric design of a plate and spacer in Fusion 360, focusing on the vocabulary and thought process of sketch constraint and feature association.

  4. Exercise: Marble Run in Fusion 360: Part 1 [26:55]. Walkthrough of part 1 of Exercise: Marble Run in Fusion 360, talking through drawing a sample design, with an emphasis on the thought process of parametric design as opposed to CAD software operation. Some time points in the video:

    • 00:00 objectives of the exercise

    • 01:05 whiteboard drawing of the sample device

    • 03:38 starting a new Fusion 360 design with sketches at top level

    • 06:26 beginning the playfield component by constructing a plane

    • 07:17 creating the playfield component

    • 09:20 detailing the strut slots

    • 12:30 detailing the first edge barrier slots

    • 16:28 mirroring the first edge barrier slots

    • 17:21 filleting the playfield corners

    • 17:51 naming and modifying parameters with the Change Parameters dialog

    • 21:20 detailing the dowel pin holes

    • 24:08 fixing the position of the struct slots

    • 25:44 summary and recap of the exercise objectives

  5. Exercise: Marble Run in Fusion 360: Part 2A [28:57]. Part 1 of 3 discussing the second phase of Exercise: Marble Run in Fusion 360 by continuing the sample design. Please note that several mistakes are included which are fixed later in the process. Some time points in the video:

    • 01:18 creating the foot component

    • 01:28 using isolate to hide parts

    • 02:45 using a long click to select hidden features

    • 04:00 adding slots for tabs

    • 07:13 creating the central vertical strut

    • 07:40 using a midline sketch plane for a symmetrically extruded part

    • 08:38 roughly drawing the contour

    • 09:30 adding constraints to locate the contour

    • 11:25 associatively locating the tabs using projected geometry

    • 12:10 dimensioning a press-fit wedge tab in laser-cut plywood

    • 13:23 drawing parts with deliberate overlap to represent press-fits

    • 14:12 jump cut after detailing three more tabs

    • 15:04 extruding strut symmetrically around drawing plane

    • 15:55 beginning the side barrier part

    • 16:15 creating the sketch plane, somewhat incorrectly (later replaced)

    • 16:44 creating the barrier component

    • 18:44 drawing the contour with lines and arcs

    • 20:09 projecting the tab center lines, at which point I fail to notice a perpendicularity problem (later fixed)

    • 22:55 extruding the barrier part

    • 23:32 considering the need for a cross-brace, but postponing creation

    • 24:40 adding a section view

    • 25:19 tab section view, at which point I fail to notice an parallelism inconsistency (later fixed)

    • 27:05 recap and summary

    • 27:41 demonstration of associative changes as parameters are changed

  6. Exercise: Marble Run in Fusion 360: Part 2B [18:33]. Part 2 of 3 discussing the second phase of Exercise: Marble Run in Fusion 360 by continuing the sample design. Some time points in the video:

    • 00:08 version control comments during file save

    • 00:32 correcting the sketch plane for the barrier part

    • 01:54 adding a midplane reference plane

    • 03:08 deleting the incorrect plane and replacing the sketch plane

    • 04:15 patching up the barrier part sketch

    • 04:38 invalid projected geometry marked in green

    • 05:33 jump cut after repairing the barrier sketch

    • 06:52 discussion of the cross-brace design options

    • 08:08 creating a sketch plane for the cross-brace

    • 09:12 creating the cross-brace component

    • 10:10 jump cut after false start drawing the contour

    • 10:40 drawing a half-lap joint

    • 12:35 symmetric extrusion of the cross brace

    • 13:04 jump cut to adding a notch the strut for the half-lap

    • 14:50 drawing the notch contour using referenced geometry

    • 16:44 adding a second notch to the strut right below the playfield

    • 18:17 saving a new version

  7. Exercise: Marble Run in Fusion 360: Part 2C [26:05]. Part 3 of 3 discussing the second phase of Exercise: Marble Run in Fusion 360 by continuing the sample design. The process demonstrates several alternatives for joining two parts, several of which which are not correctly associative and so fail to adapt to parametric changes. Some time points in the video:

    • 00:10 resuming with all fabricated parts designed

    • 00:30 plan for part duplication, relocation, and creating a joint

    • 01:00 copying the cross-brace to the upper position

    • 02:27 using the align operation to position a part

    • 03:51 demonstration of the non-associativity of a captured position

    • 04:35 trying an as-built rigid joint to location the upper brace

    • 05:45 demonstration of the non-associativity of the as-built joint

    • 06:28 using a regular rigid joint to associatively locate the upper brace

    • 07:36 first try at joint including an offset error (using wrong snap point on strut slot)

    • 08:03 demonstration of the associativity of the rigid joint

    • 08:26 fixing the joint snap point for correct alignment

    • 09:09 demonstration that Fusion 360 rigid joints are five DOF associative, not six DOF

    • 09:45 final demonstration that the cross-brace is associatively joined

    • 10:19 discovery of constraint instability in barrier part sketches

    • 10:48 jump cut after barrier part sketch fixes, commentary on sketch constraint

    • 12:02 copying the barrier part to the opposite side

    • 13:01 creating auxiliary sketches to create points and axes usable for defining joints

    • 14:24 jump cut further into the auxiliary sketch process

    • 15:46 jump cut to the correct solution for defining the barrier part rigid joint

    • 18:10 demonstration of full associativity of the parts and joints under parameter changes

    • 19:20 adding the course kit wooden dowel pins imported from McMaster-Carr

    • 21:07 copying the wooden dowel and using a joint to fix it at second location

    • 22:30 exporting a laser-cuttable DXF file of the playfield geometry

    • 24:36 opening and previewing the DXF file using a different program

    • 25:15 recap and summary

Mechanical Design

  1. Bearing Components [14:50]. Visual walkthrough of the bearing components from the F20 Course Kit.

    • 00:06 shoulder screws

    • 00:42 sleeve bushing bearing

    • 01:42 ball bearings

    • 03:33 nylon spacers or bushings

    • 04:01 washers

    • 04:26 using bearings in pairs

    • 05:12 kit inventory pages on course site

    • 06:30 related tools: hex driver, wrench

    • 07:42 inch-sized vs metric

    • 08:12 measuring bearings with calipers

    • 09:34 typical shaft and bearing assemblies

    • 10:15 bushing pair on shoulder screw

    • 11:14 cantilevered shaft

    • 11:50 radial load versus thrust load

    • 13:09 ball bearing pair on shoulder screw

    • 14:09 nylon bushings on shoulder screw

    • 14:36 recap and summary

  2. Laser-Cut Kit Parts [7:34]. Visual walkthrough of the laser-cut parts from the Course Kit Visual Guide.

    • 00:06 overview of the designs

    • 00:36 visual guide on course site

    • 01:06 Arduino mounting plate, nylon screws

    • 01:48 servo mounting plate

    • 02:12 tab and slot fit

    • 02:40 disc or wheel plate

    • 03:22 breadboarding parts,

    • 03:30 self-tapping blunt sheet metal screws

    • 03:50 tab and slot structure

    • 04:07 tabbed side plates, with bushing and motor hole patterns

    • 04:49 example assembled bearing clevis structures

    • 06:30 example tube structure

    • 06:53 recap and summary

  3. Rotational Bearing Forces [12:15]. Analysis of the forces and moment exerted by rotational bearings supporting a shaft.

    • 00:05 physical parts

    • 00:19 shaft and bearing diagram

    • 00:53 general definition of a bearing

    • 01:30 degrees of freedom and force support required

    • 02:07 shaft force and moment diagram

    • 03:18 diagram of radial components supporting the shaft moment

    • 04:48 formula for radial load and implications

    • 06:30 diagram of forces on a single bushing

    • 07:37 diagram of a clevis structure supporting a pair of bearings

    • 08:25 discussion of door hinge

    • 08:54 discussion of clevis self-collision

    • 09:36 diagram of a cantilevered shaft

    • 10:25 moments created by cantilevered radial loads

    • 11:33 recap and summary

  4. Micro Servo Mounting [6:58]. Design considerations for panel-mounting a micro-servo and coupling it to a mechanism via a tie-rod four-bar linkage.

    • 00:10 overview of the included servo parts

    • 00:25 spline shaft and servo horn installation

    • 01:30 mounting tabs and self-tapping screws

    • 01:52 CAD view of servo mounting plate

    • 02:17 physical installation in mounting plate

    • 03:23 servo horn tie rod features and limits

    • 04:02 CAD view of tie rod construction and linkage operation

    • 05:38 loads are decoupled with a parallel axis structure

    • 06:16 recap and summary

Fabrication at Home

  1. planned: course kit show and tell

  2. planned: making structures from air-dry clay

  3. planned: making pivots using embedded bushings

  4. planned: making wire linkages

  5. planned: attaching hobby servos

Signal Processing

  1. Arduino Filter Demos [26:15]. Walkthrough of several examples of single-channel signal processing on an Arduino using the ref:FilterDemos-sketch.

    • 00:52 FilterDemos Arduino sketch

    • 01:24 Arduino compatibility meant for cut and paste

    • 02:29 top-level demo sketch

    • 02:50 statistics.h for central measures of average and variance

    • 03:57 linear.ino with floating-point linear mapping

    • 04:30 hysteresis.ino with hysteresis thresholding, value suppression, and debouncing

    • 05:54 static variables within the functions

    • 06:47 mistake: showing suppress_value() while discussing debounce()

    • 07:27 corrected explanation of suppress_value()

    • 07:52 smoothing.ino with a first-order smoothing filter

    • 09:12 median.ino with a short three-sample median for suppressing outliers

    • 10:07 lowpass.ino with a linear IIR discrete-time smoothing filter

    • 11:32 low-pass transfer function plot

    • 11:59 chirp response of the low-pass filter

    • 12:50 return to transfer plot

    • 13:08 walk through the lowpass() function

    • 14:29 flow chart of the digital biquad filter

    • 15:41 filter order and rolloff

    • 16:28 bandpass.ino with a band-pass filter to pass a range of frequencies

    • 17:11 chirp response of the band-pass filter

    • 18:17 generating fixed-filter code using SciPy

    • 19:05 bandstop.ino with a filter that suppresses a range of frequencies

    • 19:33 ring_buffer.ino with a history buffer

    • 20:23 ring buffer differentiator

    • 21:07 ring_median.ino with a longer median filter window

    • 21:59 trajfit.ino with a quadratic fitting filter to estimate position, velocity, and acceleration

    • 24:42 learning to apply this algorithms with offline testing

    • 25:38 tools and libraries

    • 26:02 summary and wrapup

  2. Arduino Classifier Demo [17:22]. Walkthrough of an Arduino binary decision tree classifier in :ref`ClassifierDemo-sketch`, generated using scikit-learn from labeled sonar data.

    • 00:14 ClassifierDemo Arduino Sketch

    • 00:27 classification and labeling

    • 00:58 machine learning as data-based modeling

    • 01:22 signal workflow overview

    • 02:11 training set, labeled set of position and velocity pairs

    • 03:00 classifier tree plotted as points and regions

    • 03:51 classify() function generated by classify_gen.py

    • 04:33 hand-drawn planar segmentation representing a binary tree

    • 06:05 returning to plot of points and regions

    • 07:34 scikit-learn, SciPy, NumPy, and matplotlib

    • 08:15 sample code overview

    • 08:48 walk through sensor filtering pipeline

    • 10:20 sensor scaling and integer underflow concerns

    • 10:37 lowpass() smoothing filter

    • 11:06 quadratic fitting filter

    • 11:46 data collection, labeling, and merging into training set

    • 13:00 debouncing the classifier output

    • 13:37 plot of live data with classifier output

    • 15:00 higher-dimensional data from multiple sensors or filters