In the spring of 2014, I taught two related courses:
This course, taken by physics students following their general introduction to passive analog electronics, dips into digital electronics and microcontrollers. It is moving away from an attempt at comprehensive coverage of digital logic gates and specific-purpose digital chips toward software-controlled digital signal processing. For instance, we introduce Arduinos and their programming language, having students wire circuits to operate motors, read sensors, and communicate between devices. They examine and explain the signals generated in between devices, giving them some insight beyond the programming into what the physical representation of the signals actually is, in terms of voltage as a function of time.
This course, open with no pre-requisite to any Kenyon student, aims to introduce students to manipulating sensors and actuators using Arduinos. The students complete five introductory lab exercises to familiarize themselves with electronics concepts, applications, and resources available for Arduinos. Each student then comes up with a project to build, applying what they have learned to make something that they find interesting. This course was a tremendous amount of fun (and work) for the students and me.