I ran two workshops as part of the Yale Open Music Initiative started by Dr. Scott Peterson. In the workshops, we covered the basics of the Arduino platform, a versatile and open source microcontroller that is a staple in electronics projects and some basic programming using the Arduino IDE.
The workshop covered:
1.) Simple digital in and out using digitalWrite() and digitalRead() commands. We hooked up some LED’s, pull up resistors and arcade buttons to form a simple circuit where pressing the button changes the LED blink rate.
2.) Simple analog in and out using analogWrite() and analogRead(). We used a potentiometer to vary the brightness of an LED and covered the operation of PWM (255 resolution etc) and the capabilities of the on-board 10-bit DAC (1024 values etc).
3.) Serial Communication using Serial.println() to troubleshoot and debug the program. We compared and contrasted the brief differences in Serial, I2C and SPI communication protocols.
4.) Interfacing the Arduino with music software. We sent the potentiometer values and arcade button on/off state into Max/MSP and converted it to MIDI for Ableton Live. The same can be done with open source software using Pure Data and programs such as Reaper and Ardour. The buttons control some loaded drum samples and the potentiometer controlled a filter.
It was a lot for a short period of time, but I think the workshop went very well and the students appreciated how easy it was to interface all these components together! Many of the attendees had also taken an intro programming course, which sped the discussion and demonstrations along. The students had some experience with each of the components (some were very familiar with Pure Data, but had never touched Arduino or vice versa) and were very excited to link all of them together!
Having taken Prof. Roman Kuc’s EE 348: Digital Systems (thanks to Prof. Kuc for also letting me borrow 4 additional arduinos!), it was a very fun experience to teach the Arduino hardware after having used it inside out to make an autonomous robot. Understanding the registers at the bit level and using register commands in the Arduino IDE greatly increased my confidence and command of Arduino hardware. I was particularly happy with my ability to explain concepts like Serial communication and I2C to the community!