Welcome to Introduction to Arduino, fall 2024 edition.

We’re going to learn how to make small objects perform magic.

This one-credit micro course is presented by IDeATe at Carnegie Mellon University and makes use of the IDeATe Physical Computing Lab, room A10 in the basement level of Hunt Library.

Instructor: Robert Zacharias , rzachari@andrew.cmu.education (minus the cation)

Course synopsis

This practical course is designed to quickly take students from beginner to basic functional knowledge of the Arduino microcontroller in a total of about 15 hours. You can expect to learn:

  1. how to write and upload simple code for the Arduino to perform basic logic functions like reading a switch to change a motor's direction,
  2. how to integrate a variety of physical inputs including knobs, distance sensors, and light sensors,
  3. how to integrate a variety of physical outputs such as motors, lights, and speakers, and
  4. how to put all of these together to build simple, self-contained, low-cost, low-power systems.

The course culminates in students producing and artful and/or functional interactive creation of their own design.

Enrolled students have access to IDeATe’s well-equipped Physical Computing Laboratory on campus. Undergraduates, graduate students, faculty, and staff interested in learning new skills in an interdisciplinary environment are welcome.

There are no technical prerequisites.

Course schedule

Asynchronous + synchronous hybrid structure

The course is divided somewhat evenly between synchronous and asynchronous modules.

Asynchronous course activities comprise:

  • ~6 hours of learning via the professor’s prerecorded lectures on this course’s Canvas page
  • ~2 hours completing follow-along-yourself activities and quizzes that accompany those lectures

Synchronous course activities comprise:

  • ~2 hours of course introduction during the first class
  • ~1 hour of open Q & A during the second and third classes
  • ~15 minutes individual meeting with professor to discuss final project proposal
  • 5 hours final project build session during the third class


A1 section schedule overview

date time № hours agenda
Friday, Sep. 20th 10:00 a.m. to ~noon ~2 hrs. course introduction; handing out course materials

(intervening week)
whenever you’d like (asynchronous) 4 hrs. Canvas modules:
 • Physical Computing Lab Space
 • Arduino board
 • Programming the Arduino
 • Electronics
 • Tying it together: reading inputs, driving outputs
Friday, Sep. 27th 10:00 a.m. to ~1 p.m. ~3 hrs. questions from asynch lectures; project proposals due for review and feedback (submit via Canvas)

(intervening week)
whenever you’d like (asynchronous) 3 hrs. Canvas module:
 • More inputs and outputs
Friday, Oct. 4th 10:00 a.m. to 2:50 p.m. 5 hrs. questions from asynch lectures; project development, presentation, and crit



A2 section schedule overview

date time № hours agenda
Sunday, Oct. 27th 4:00 to 5:30 p.m. 90 mins. course introduction; handing out course materials

(intervening week)
whenever you’d like (asynchronous) 4 hrs. Canvas modules:
 • Physical Computing Lab Space
 • Arduino board
 • Programming the Arduino
 • Electronics
 • Tying it together: reading inputs, driving outputs
Sunday, Nov. 3rd 12:30 to ~3:30pm ~3 hrs. questions from asynch lectures; project proposals due for review and feedback (submit via Canvas)

(intervening week)
whenever you’d like (asynchronous) 3 hrs. Canvas module:
 • More inputs and outputs
Sunday, Nov. 10th 12:30 to 5:30 p.m. 5 hrs. questions from asynch lectures; project development, presentation, and crit


Housekeeping

This course meets only three times, and so it follows that attendance at all three sessions is mandatory. (Emergencies are excepted of course; please contact the instructor at your earliest convenience in that case.)

Every registered student gets a kit of parts to keep. Students may borrow non-consumable electronic materials such as specialized sensors, motors, etc., that are stored around the Physical Computing Lab, but they must return these to where they came from the end of the course. Students may not remove tools or equipment such as digital multimeters, power supplies, scissors, wrenches, etc., from the room at any time. Please don’t do this!

The instructor expects that students:

  • Will arrive on time and ready to start
  • Will work on class material for the duration of the course
  • Will be patient with themselves as they learn a new skill set
  • Will ask questions! Odds are very good that others in the room have the same question as you.

Students can expect the instructor to:

  • Arrive prepared to teach
  • Maintain a positive learning environment where ignorance isn’t an embarrassment
  • Provide meaningful feedback and constructive criticism

A word on academic integrity

In the open-source hardware and software world, a great deal of work is built upon the freely shared contributions of others. You are welcome to (and expected to!) incorporate into your work at least some code, circuit designs, plans, cutfiles, fabrication methods, etc., from a public source you find. That said, take care to appropriately attribute authorship and sources, and even inspirations if you so choose. If you make something you think others may find interesting or useful, consider sharing it through a community platform. A wholesale copy of existing work is not acceptable for your final project, but a modification or adaptation probably is. Speak with the instructor if you have any questions.

Note on pacing and expectations

We’re fitting lots of learning into a very small amount of time. The purpose of the course is not to do a warp-speed introduction to all things microcontroller, but rather to give students the foundation necessary to further elaborate their own skills in whatever direction they choose. The course structure is light on lecture and heavy on hands-on learning and practice.

Final project

The purpose of this course is to give you a structured opportunity to learn something you want to learn. You will define your final project goals and expectations, in consultation with the instructor. By the second hour of the second class, you will have a proposal consisting of a couple sentences and a hand-drawn sketch. We’ll discuss your ideas one-on-one before you leave the second class. The third class is a build session, and in the last half hour you’ll show your work for a brief critique by your classmates, the instructor, and yourself.

Project proposal form

  • At a minimum, your project must at least:
    • Be driven or meaningfully affected by data that comes in from the world
    • Interpret the incoming data
    • Act on the data by changing some physical output(s)
    • Use an Arduino to do this!
  • A stronger project might:
    • Read multiple input data streams
    • Produce multiple different physical outputs
    • Have “state” or “history,” e.g. doing something twice in a row does not necessarily produce an identical outcome
    • Involve the use of a sensor and/or output device of particular interest to the student
    • Be especially well-made physically, electronically, and/or in software
    • Reflect creative use of the available resources towards an interesting or meaningful end
    • Play a game with itself or a user (or users)
    • Solve a real-world problem big or small
    • Amuse, delight, excite, or surprise

A word on fruit height

Scoping a creative project can be very challenging. For the purpose of this class, it would be inappropriate for a student to make a remote health monitor that collects electrocardiography data, analyzes the heart trace for arrhythmia, and transmits results to a server. That’s high-hanging fruit: it would be an appropriate goal for a team of experienced builders of embedded systems, but not for a beginner.

It would also be inappropriate for a student to submit for their final project a button that turns a light on and off, because that’s obviously low-hanging fruit.

The goal for the final project is to aim for a challenging, but reasonably achievable, outcome: middle-height fruit.

Class materials

Enrolled students get a kit that offers a good starting point for learning physical computing inputs and outputs.

Grading

Getting a passing grade in this one-credit course is straightforward; you must complete each of these four elements:

  1. Attend each in-person session (some exceptions can be made; please contact the instructor at your earliest convenience to discuss)
  2. Complete all of the assigned Canvas asynchronous learning modules, and upload checkpoint videos by the time of the assignment due dates
  3. Get instructor signoff on your final project proposal prior to the final build day
  4. Put forth a sincere effort to build your final project

This course is designed to be a brief, fun, exploratory introduction to a new area of technical exploration. We hope it’s interesting and enjoyable!