1. Summer 2017 Syllabus

Tue-Fri 3:00-5:00PM
July 5-August 11
Location: Hunt Library A10 (IDeATe Physical Computing Lab)
Instructor: Dr. Garth Zeglin
Teaching Assistant: Sydney Ayers

1.1. Course Description

This project-based course introduces students to the fundamentals of electronic and software engineering in the context of developing a pinball machine. This objective combines elements of electromechanical systems, real-time software, human interaction, and physical dynamics. The specific outcome will be driven by student game designs and culminate in one or more working machines to be performed or played at a final show.

The course will begin with a series of skill-building labs to learn basic electronics theory, Arduino microprocessor programming, and the properties of the sensor and actuator components. The students will then develop a detailed project concept, followed by developing and testing a series of progressively more detailed prototype revisions.

1.2. Project Description

Students will work in small teams to design, build, and program a pinball machine from scratch. The scope of the project includes real-time software, game concept design, and electronic and mechanical fabrication and testing. The emphasis is on elegant design and execution using low-cost components. The physical construction will use laser-cut and CNC-routed wooden parts. The skills section covers use of essential electronic lab equipment including multimeters, soldering irons, and oscilloscopes. If time permits, students may also participate in the CAD/CAM and CNC fabrication of the wooden parts.

We will begin by analyzing the two game boards developed last summer, covering circuit theory, lab technique, and real-time software methods. We will synthesize a new game design and develop new mechanical component designs as needed. In parallel, the software stack will be extended to support the game logic. The system will be brought together as a whole, play-tested, and revised. The final outcome will be a playable game to be demonstrated at the closing symposium.

1.3. Course Goals

Upon completing this course students will be able to do the following:

  • apply basic electronic theory to build and analyze simple sensor and actuator circuits
  • write Arduino software to implement real-time control of an electromechanical system
  • develop reactive behaviors
  • design state machines for implementing control logic
  • develop a machine prototype through multiple iterations
  • observe good lab discipline and etiquette

1.4. Course Resources

The course will be hosted in Carnegie Mellon’s IDeATe Physical Computing Lab. Students will have access to Arduino microcontrollers, a variety of electronic components and test equipment, prototyping supplies, and programming software on university computers. Project materials will be free to students.

1.5. Policies

Coming to class is mandatory. The coursework will primarily take place during the lab sessions.

The classroom for the course in the IDeATe Physical Computing Lab in Hunt A10, part of the IDeATe@Hunt Collaborative Making Facility. All lab users are expected to abide by the Physical Computing Lab Policies. The lab inventory of components and materials is available online under Physical Computing Lab Inventory.

1.6. Calendar

The general plan is as follows:

Week 1
rapid introduction to Arduino microcontroller programming
basic electrical theory and practice
basic physical input/output
Week 2
basic principles of state machine design and programming
actuators and sensors
discussion of pinball concept and history
Week 3
project ideation: what kind of machine(s) will we build?
writing a development and testing plan
basic real-time programming techniques
feasibility experiments
Week 4
design and fabrication of physical structure
ball actuator tests (solenoids, servos, speakers, LED modules)
ball sensor tests (microswitches, photoreflectors)
game or performance software prototype
Week 5
installing actuator systems
installing sensor systems
testing, testing, testing
Week 6
software finalization
final documentation
performance and presentation

During the first two weeks of lab sessions we will explore many basic programming and circuit principles via in-class technical exercises. Then the emphasis will shift to developing the implementing the project idea.

The following course calendar will be filled in as we go:

Date Day Class In-Class Activity
Jul 4 Tue   No class for July 4 holiday.
Jul 5



Course overview.
Elementary electrical theory.
Basic electronic tools.
Jul 6



Ohm’s Law.
Voltage Divider circuits.
Basic sensors.
Jul 7



Motors and Actuators.
DC motors.
Review of SAMS 2016 games.
Jul 11 Tue 4 Introduction to the Arduino.
Jul 12 Wed 5  
Jul 13 Thu 6  
Jul 14 Fri 7 Tentative: field trip to Kickback Cafe.
Jul 18



Field trip review discussion.
Project brainstorming.
Jul 19 Wed 9  
Jul 20 Thu 10  
Jul 21 Fri 11  
Jul 25 Tue 12  
Jul 26 Wed 13  
Jul 27 Thu 14  
Jul 28 Fri 15  
Aug 1 Tue 16  
Aug 2 Wed 17  
Aug 3 Thu 18  
Aug 4 Fri 19  
Aug 8 Tue 20  
Aug 9 Wed 21  
Aug 10 Thu 22 Practice presentations.
Aug 11 Fri 23 Closing Symposium