Sensors and Human-Machine Interfaces

Listed as “Electronics and Robotics in Conceptual Design”

ART 511.2

Conceptual & Information Arts, Department of Art, San Francisco State University – Spring 2014

T/Th: 2:10-4:55pm, ROOMS: CA 260(T) / FA 544(Th)

Instructor: Carlos Castellanos, Office: FA 525, Office hrs: T/Th 1-2pm and by appointment

Prerequisites: ART 410 & 412 or permission of instructor; preference given to CIA majors

Download a PDF of the course description/syllabus.


This course introduces students to techniques and aesthetics of creating experimental art/media events and installations based on technologies of electronics, sensors and human-machine interaction. For many years now many artists, designers and technology researchers have been exploring alternative to the standard mouse/keyboard interfaces available in standard desktop and laptop computers. New research areas such as sensing of motion, gesture recognition, remote sensing and wearable and tangible computing interfaces offer a rich set of techniques and technologies for making computers more “human”. Similarly new paradigms of ubiquitous computing are exploring the possibilities of activated spaces in which objects are endowed with intelligence, communication, and responsiveness. This course will survey previous artistic work that investigates these conceptual spaces.

Content & Organization
The course focuses on developing conceptual and technical strategies for creating human-machine interaction-based art that connects computers to the physical world. Subjects addressed in the class include: human cognition and machine interaction, human embodiment in the digital age, cybernetics, use of a variety of sensors, simple and complex interaction models and wireless sensor networks. Familiarity with computing, interactive media, Arduino, and electronics will be useful but not required. This is a lecture-lab course and includes regular readings, discussions, exercises and projects. Topics are presented by the instructor, examples are shown and explained and exercises are assigned that coincide with the theme(s) covered. These are to be completed by students both during lab periods and outside of class.

The course will use the Arduino microcontroller board both as a self-contained microcontroller (a mini computer capable of running interactive events) and as an interface board for computers. The Arduino is an open source, cross platform, inexpensive hardware platform being supported around the world by artists and makers interested in experimental media and interfaces. ( Each student will be given an Arduino board and prototyping kit to use during the semester so they will be able to work at home.

In addition to learning basic technical skills required to construct interactive systems, the course has the following objectives:

  • Ability to articulate theoretical perspectives relevant to cultural experimentation with embodiment, physical computing, ubiquitous computing, tangible interfaces, motion detection, gesture recognition, activated objects and alternative interfaces
  • Ability to construct experimental human-machine interfaces and incorporate them into your art practice
  • Learn to design artworks that explore the use of sensors
  • Learn techniques for creating interactive/physical computing-based art
  • Develop aesthetic criteria for designing and producing human-machine-based art systems
  • Ability to identify, describe and analyze the work of artists working with sensors and experimental interfaces
  • Understand basic theoretical principles of analog and digital electronics
  • Ability to design and build simple circuits using components such as resistors, capacitors, leds, relays, photocells, etc
  • Learn to program the Arduino board in order to build interactive devices and activated objects
  • Learn to program in Processing and/or Max/MSP/Jitter on how to send and receive data from an Arduino
  • Learn how to use wireless technologies and the Internet to remotely sense and control interactive events
  • Learn how to read datasheets on electronic components

Required Materials & Text
Course Website: You’re looking at it:

The course website is the most important resource of information for this course. In addition to this course description and the class schedule/syllabus, the website will have links to articles, code tutorials and all kinds of resources related to the course. Most assigned readings will be available online.

Required Text: Arduino for Beginners: Essential Skills Every Maker Needs (John Baichtal, Que Publishing, 2013).
Other required readings will be put on reserve in the library and/or made available online

Recommended:Information Arts: Intersections of Art, Science & Technology (Stephen Wilson, MIT Press Press, 2002)
Physical Computing: Sensing and Controlling the Physical World With Computers (Dan O’Sullivan & Tom Igoe, Course Technology Publishers, 2004)
Making Things Talk: Practical Methods for Connecting Physical Objects (Tom Igoe, O’Reilly Media, 2007)

Students are responsible for all of the material presented in class. All assignments must be presented on the due date. Late assignments will be excepted no more than 1 week after the due date, but with a 50% grade reduction. Students are expected to meet with the instructor to review progress and discuss individual approaches. Students are expected to perform the necessary background research on topics and techniques appropriate to completion of the assignments and projects.


Exercises 10%
Research Presentation 5%
Project 1 10%
Project 2 20%
Final Project Proposal 5%
Final Project 25%
Journal/Documentation 15%
General Participation (attendance, critiques/readings, etc). 10%

Project Grading Criteria
A. Research, Documentation, Presentation, etc.
B. Formal and Technical Achievement
C. Innovative Response and Conceptual Approach
D. General effectiveness of project

Exercises, Research Assignment & Projects
There will be several small exercises, a research presentation, 2 small projects and one large final project this semester. The exercises are done independently and are designed to build skills for use in your projects. The projects can be done independently but small groups of two or three are recommended.

Collaboration is an important part of this course. Students must plan out and document what their roles and accomplishments are in the final project so as to be graded individually in terms of both their technical and conceptual skills. All collaborations must be approved by the instructor.

Attendance and involvement in the discussions, critiques, readings, class collaborations, field trips and presentations are critical for each student’s success and for the success of the course as a whole. Class time will be devoted to this and it will make up a significant part of your participation grade.

Suggestions for commenting on fellow students’ work: When watching your classmates present their work in class, there will be some time for verbal comments but you should take written notes on their presentations and on their project/circuits/subject matter, etc. Offer suggestions on what they do well, what they could do differently, useful conceptual strategies and anything they could do to make their work better. Presenters themselves should also take notes during or immediately after their presentations. Feedback, knowledge sharing and creative dialogue are critical to success in this course and in the arts and technology in general. Share notes, schematics, code, ideas, other artist works, etc; both during and outside of class. The atmosphere in the course should be one of creative collaboration and continual sharing of ideas and practical know-how.

Research Presentation
This will entail an in-depth presentation an artist who interests you who works with sensors, physical computing and/or object control. You will be disseminating information to the class in a manor that facilitates learning and comprehension of the topic. You will write a short paragraph on why you find the artist interesting and delivering a 5-minute presentation in class briefly surveying the artist’s work.

Journal & Documentation
You will be expected to keep an online journal/blog of your work in this class and you must update it weekly, if not more often. Document your work. Include sketches, experiments, ideas, etc. Pictures, videos, etc are all fine. Think of it as a way to help yourself with your projects and a way to help others who take this class (now and in the future). The tricks you found that work, the pitfalls you hit, ways around them, sources for materials, reference material, etc.

You should also keep notes on the readings in your journal. The various readings include some theory, some practical applications, some experiments, etc. Write up what impresses you, what confuses you, what you agree or disagree with, and what project ideas come to you while you’re reading. By about the middle of the semester, you should have a number of possible final project ideas online. You must post at least 3 questions or issues raised by each week’s readings to your journal.

Your journal can be no-frills HTML, no need for complex sites. Blogs and wikis are fine. Please don’t use Flash or other formats that are not text-searchable (except for embedding video and other media). Ideally, the journal will give you a head start on documenting your projects for future portfolio reference, and those who come after you a place to look for reference material.

A journal entry is part of the assignment for each exercise/assignment/project you do, and each set of readings. Feel free to do more entries as you see fit. The entries for the readings don’t have to be long but they should convince me that you’ve read the material and engaged with it. As mentioned above, your journal should be updated weekly. You should have at least one or two journal/blog entries a week.

Document your projects thoroughly. Plan in advance, perhaps as a group, to have what you need to document at least your mid-semester and final projects. Photos, video, drawings, schematics, and notes are all valuable forms of documentation.

Work on this as you go, do not put it off until the end.


  • Complete all work on time
  • Participate fully in all studio, critiques, discussions, demo, workshops and exercises
  • Arrive to class on time
  • Bring any problems, questions, or circumstances that hinder your full participation in the course to the attention of the instructor

Criteria for Excellence (i.e., how to get an A in the course)
In addition to the project grading criteria above, the following represents a guide for excelling this course

  1. Maintaining a constant and growing journal/blog reflecting a consistent and focused engagement with ideas, research, works, discussions and other related subject matters and class exchanges.
  2. Completing all assignments on time.
  3. Actively participating in and contributing to all class discussions, critiques, lectures and presentations.
  4. Maintaining a consistent and timely presence.
  5. Taking risks in projects and ideas, pushing past what you already know and discovering new territories, terms, skills, connections. Ideas that fail often teach more than ideas that succeed.

Limits on What Can be Taught
This course cannot offer a full introduction to electronics and microcontroller programming in addition to all of its other objectives. Students will be urged to design events within the realities of the semester and the facilities. For example, students will not be able to learn advanced kinetics and robotics although through clever use of found objects such as toys and appliances they may be able to achieve desired effects. Similarly, students will not be able to learn full interactive media programming environments such as Processing or Max/Jitter although enough Processing skills will be taught to enable students with minimal prior exposure to create events. The course cannot teach full Processing skills. Since the Arduino board allows serial communication, students will be able to use any programming environment they are comfortable with (eg Max/Jitter or Processing) although the course cannot offer depth support for each of these environments. Students will be expected to tailor their art works to the realities of what they know and what can be taught within the limits of the course

Lab Fee Charge Notification
The lab fee for this course is $40. Each student will be loaned a CIA Experimenter’s Kit, which will allow experimentation with the topics of the course without reliance on the class lab environment. There is over $130 worth of equipment and supplies in the kit. Each student will be required to return the kit (minus the use of expendables) in good condition at the end of the semester. If the student loses or breaks equipment, they will be expected to buy replacement parts. Proof of lab fee payment will be required in order to obtain the kit. Once the class is over a certain number of these kits will be made available for student check out if a monitoring system can be developed.

The experimenter’s kit main equipment (that must be returned) includes: Arduino board, USB cable, solderless breadboard, variable power supply, needle nose plier, wire stripper, alligator clips, multimeter, and plastic carrying case. It also includes an expendable packet of components (resistors, leds, transistors, hookup wire, photocells, relay, etc).

Lab fees are mandatory, as noted in the footnote described in the online course schedule – meaning you must pay the charge as condition of enrollment in this course. If you remain enrolled in this course past February 7th (the add deadline), a charge for the above amount will appear in your University Account. It is also footnoted in the class schedule that students who withdraw from Art department classes after will not have their instructional materials fees refunded. The Art Department Office will email a notification when your University Account has been charged. Lab fee payments can be made at One-Stop Student Services (SSB 103) or the Bursar’s Office (ADM 155) after the charged appears on your student account. To see if your account has been charged, check your financial statement on your MySFSU page. Unpaid balances in the student university account can affect registration, graduation or other campus services.



Note: subject to change
Important Dates
Feb 07: Last day to add classes with permit number (12:00 AM), last day to drop classes
Mar 21: Last day to request CR/NC option
Mar 24-31: SPRING BREAK, no class
May 16: Last day of classes

Date Theme/Topic Tuesday Thursday
Week 1
T – 01/28 | Th – 01/30
Introduction to course NO CLASS – Instructor out of town

Homework: (Due T, Week 2)

  • join the course discussion group (you will be sent and invitation via e-mail)
  • create your journal/blog and post link to the course discussion group
  • Blog: Observation. Observe your environment in your everyday life (your home, neighborhood, grocery store, etc). Pick out technologies that you see that you think are using sensors. Write down your assumptions as to how the technology works and describe the context in which it is being used. Watch people using it take notes on how they (and you) interact with them. Brainstorm some ideas for creating aesthetic experiences (e.g. artworks) using these technologies. Write all of this on your blog
  • Also, post at least 3 questions or issues raised by the readings to your blog

Readings (Due Th, Week 1):

Readings (Due T, Week 2):

  • Introduction to Course
  • Introduction to electricity
  • Introduction to Arduino board
  • Setting up a breadboard

Exercise #1 (Due Th, Week 2)
Installing and working with Arduino environment and Fritzing

Exercise #2 (Due Th, Week 2)
Blinking LED (more info below)

Week 2
T – 02/04 | Th – 02/06
Basic Electronics, Sensors & Microcontrollers
  • Basic electronics
  • Digital Input/Output
  • Analog input
  • Discuss week 2 readings

Readings (Due T, Week 3):

Artist Research Presentation (Due T, Week 3)
Presentation on an artist working with sensors/physical computing (details below)

  • Introduction to Arduino Programming
  • Using a Multimeter
  • More sensors and circuits
  • How to Solder

Exercise #1 & 2 Due. Upload to blog before class and be prepared to demo and explain it

Exercise #3 (Due Th, Week 3)
Hacking a toy or device (see details below)

Exercise #4 (Due Th, Week 3)
Digital Input/Output (more info below)

Week 3
T – 02/11 | Th – 02/13
Microcontroller Communication
  • Serial Communication with Arduino
  • More sensors, circuits and components (relays, transistors, pwm, motors)
  • Discuss readings

Research Presentations Due. Upload to blog before class and be prepared to discuss

Readings (Due T, Week 4):

  • More on Serial Communication & Integrating Arduino with Processing and Max/MSP/Jitter

Exercises #3 & 4 due. Upload to blog before class and be prepared to demo and explain it

Exercise #5 (Due T, Week 5)
Analog Input/Output (more info below)

Week 4
T – 02/18 | Th – 02/20
Interactivity, Activated Objects & Tangible Interfaces
  • More on Integrating Arduino with Processing and Max/MSP/Jitter
  • Brainstorm ideas for activation objects and creating TUIs – start building them in class
  • Discuss readings

Readings (Due T, Week 5):

Project 1 (Due week 6, Th) (see details below)
Instructor out of town: work on Exercise #5 & Project 1


Continue building activated objects and TUIs

Week 5
T – 02/25 | Th – 02/27
Motion, Gesture & Distance
  • Exercises #5 due. Upload to blog before class and be prepared to demo and explain it
  • Discuss readings
  • Workshop on motion tracking and measuring distance
  • Add motion tracking your TUI/activated object
  • Work on project 1 

Readings (Due T, Week 6):

Open lab: work on Project 1
T – 03/04 | Th – 03/06
Body Interfaces & Wearable Technologies
  • Discuss Readings
  • Workshop on bio-sensing
  • Work on Project 1

Readings (Due T, Week 7):

  • Arduino for Beginners: Chapter 4
Project 1 Due
Project 1 Presentations

Project 2 (Due week 9, T) (see details below)

Week 7
T – 03/11 | Th – 03/13
Wireless Communication & Sensor Networks Intro to Xbee wireless communication

Download XCTU tool for Mac | Win

  • Continue workshop on Xbee and wireless communication
  • open lab: work on Project 2
Week 8
T – 03/18 | Th – 03/20
Environmental Sensing Workshop on environmental sensing Field trip to Lake Merced to measure water quality (with students from Paula’s Locative Media course (ART 511.1)
Week 9
T – 04/01 | Th – 04/03
Project 2 Presentations & Final Project Planning Project 2 due

Project 2 presentations

Final Project

Proposal Presentation Due Th, week 10
Project Due week 15

Organizing, scheduling, brainstorming for Lake Merced final projects

Week 10
T – 04/08 | Th – 04/10
Final Project planning
DIY & Interactive Sound
Open/Joint lab: Work on proposal presentations

If there is time:
Workshop on CMOS circuits and sound synthesis: build a synth in class and have it respond to motion, touch, light and/or environmental data

Great tutorial on building digital sound devices with CMOS logic chips

Lake Merced Final Project Proposal Presentations Due

critique/discussion of project proposals

open lab

Week 11
T – 04/15 | Th – 04/17
Final Projects Open/joint lab final project planning/meet with instructors

Open/joint lab

Week 12
T – 04/22 | Th – 04/24
Final Projects Students present work in progress Carlos presentation on research/art practice
open/joint lab (work on final projects)
Week 13
T – 04/29 | Th – 05/01
Final Projects open/joint lab

If there is time:

  • Review of sensors and electronics
  • Review of more advanced options (accelerometer, wireless, sound synthesis, etc)
  • In-class exercises: TBD based on student suggestions
  • technical assistance / meet with instructor
  • open lab
open/joint lab

If there is time:

  • Continue review of sensors and electronics
  • Continue review of more advanced options
  • technical assistance / meet with instructor
Week 14
T – 05/06 | Th – 05/08
Final Projects Students present work in progress

Open/joint lab

Open/joint lab
Week 15
T – 05/13 | Th – 05/15
Final Projects Final Project presentations Final Project presentations



Due Th, Week 1 (01/30)

Due T, Week 2 (02/04)

Due T, Week 3 (02/11)

Due T, Week 4 (02/18):

Due T, Week 5 (02/25):

Due T, Week 6 (03/04):

Due T, Week 7 (03/11):

  • Arduino for Beginners: Chapter 4



Exercise #1, Due Th, Week 2 (02/06)

Installing Arduino & Fritzing
Download Arduino Development Software to your computer or to a computer in the lab. Read the instructions carefully and set it up – for example, drivers for the USB may need to be installed. (links also available on arduino home page – lab manager may need to install USB drives)

  • To get started, download latest Arduino version available: Read the set up guides as you set it up – remember that some USB drivers may need to be installed
  • Go through the entire guide for your operating system:
  • Document this process on your blog (i.e. installing, connecting the board, uploading a program, etc), using text, screenshots, etc

Download the Fritzing Software and read the introductory material

Upload everything to your blog by the due date (02/06).

Exercise #2, Due Th, Week 2 (02/06)

Blinking LED
If you have not already done so, download the course code repository on GitHub

Part I:

  • Open your Arduino development environment and run the Blink example located in Arduino/Basics/Blink (Blink.ino)
  • Read the Blinking LED tutorial located at
  • Read the code carefully
  • Hook up the LED to the Arduino board as explained
  • Upload the program from your computer to the Arduino
  • Run the program (it should begin automatically, a second or two after download)
  • Troubleshoot (if necessary)
  • Document your process and be ready to explain what each line of the program does

Part II:
Now you will modify the blinking code

  • Change the rate at which the LED blinks
  • Imagine a conceptual mapping of the on & off timing cycles
  • Upload the program from your computer to the Arduino
  • Run the program
  • Troubleshoot
  • Document your process and be prepared to talk about your idea and how the lights and timing relate metaphorically

Part III:
Experiment with ways of making the blinking behavior more complex

  • Modify the blinking code to control 2 LEDs
  • Make it turn one on and the other off and then reverse which is on and off and loop
  • You will need to use 2 separate pins so you will need to add those definitions to the program
  • when you use a led in any pin but 13 you will need to add a small resistor (220ohm – 1Kohm) in series with the LED
  • Upload the program from your computer to the Arduino and run it
  • Experiment with other blinking patterns & rates
  • Document your process and be prepared to explain who you modified the code and what each line of the program does

Part IV:
Sequential LED blinking

  • Modify the blinking code to control 3 LEDs
  • Make it turn each one on in sequence (turning off the others) so the light will appear to move down the line
  • Upload the program from your computer to the Arduino and run it
  • Try reversing the sequence
  • Document your process and be prepared to explain who you modified the code and what each line of the program does

Part V:
Use the LEDs to encode a message

  • Use as many LEDs as you like (note: the Arduino has only 20 pins that can be used as digital in/outs)
  • Use the blinking patterns to encode a message (e.g. Morse code)
  • Upload the program from your computer to the Arduino and run it
  • Document your process and be prepared to explain who you modified the code and what each line of the program does. Be sure to explain your messaging “language” or “protocol”

Part VI:
Learning a computer programming environment

  • Start online tutorials for whatever programming environment you plan to use to interface with Arduino (e.g. Processing, Director, Max/MSP, Flash, Python, etc)
  • We will be using Processing and Max/MSP in this course but you are free to use whatever you feel comfortable with
  • Look at Arduino Playground tutorials for interfacing with the Arduino

Artist Research Presentation, Due T, Week 3 (02/11)

Do a web search for an artist who interests you who works with sensors and/or physical computing (or a related field). Write a short paragraph or two on why you find the artist interesting and deliver a 5-minute presentation in class briefly surveying the artist’s work, showing at least two examples.

Upload the following to your journal/blog:

  • A short description of the artist and a link to his or her website (or site containing more info on them)
  • 1-2 (or more) paragraphs on why you find the artist’s work interesting and analyzing one of his/her works

Some useful links:

Exercise #3, Due Th, Week 3 (02/13)

Hacking a Toy or Device
Bring in a toy or simple electronic device to hack into. A cymbal-banging monkey toy, a computer mouse an electronic keyboard, etc. Something you don’t mind breaking. Before bringing it in, open up the device and try to figure out how it works. Without destroying it, study the components (electronic, mechanical ,etc). Think of ways you can trigger your devices with sensors or ways the device’s components can be repurposed. Document your process (photos, video, etc) and write down your ideas on your blog. We will continue the hacking in class.

The Common Methods of Hardware Hacking
Simple ways to circuit bend a toy

Exercise #4, Due Th, Week 3 (02/13)

Digital Input/Output
You will need the course code repository on GitHub

Look at the tutorial on the ITP physcomp labs site: for more details

Part I:

  • Open Fritzing environment and open the Button example located in Arduino/Basics/Digital/BreadboardAndCircuitDiagrams (Button.fzz)
  • Set-up your breadboard and Arduino board as shown
  • Open your Arduino environment and open the Button example located in Arduino/Basics/Digital (Button.ino)
  • Read the Arduino code and comments carefully and follow the instructions
  • Look at the Breadboard and Schematic views in Fritzing
  • Upload the program from your computer to the Arduino and run the program
  • Troubleshoot (if necessary)
  • Modify the circuit (both the schematic and breadboard view) and/or Arduino code so it uses different inputs and outputs than the demo
  • Upload the program from your computer to the Arduino and run the program
  • Document your process and be ready to explain what each line of the program does

Part II:

  • Open Fritzing environment and open the DigitalInOut example located in Arduino/Basics/Digital/BreadboardAndCircuitDiagrams (DigitalInOut.fzz)
  • Set-up your breadboard and Arduino board as shown
  • Open your Arduino environment and a program that reads the digital input on pin 2. When the switch is pressed, turn the yellow LED on and the red one off. When the switch is released, turn the red LED on and the yellow LED off.
  • Download the program from your computer to the Arduino and run the program
  • Troubleshoot (if necessary)
  • Modify the circuit (both the schematic and breadboard view) AND the Arduino code so it uses different inputs and outputs than the demo – I want to see new code (.ino) and Fritzing (.fzz) files!
  • Hook up the Arduino board in the modified form
  • Rewrite the program so it works with the modified circuit
  • Upload the program from your computer to the Arduino and run the program
  • Troubleshoot (if necessary)
  • Document your process (include image files of the schematics and breadboard views in Fritzing. Copy & paste the Arduino code into your blog post) and be ready to explain what each line of the program does

Part III:

  • Modify the circuit (both schematic and breadboard view) and code to explore timing and sequence (add more buttons and less if necessary) – I want to see new code (.ino) and Fritzing files (.fzz) files!
  • Try to map various button pressing/timing patterns (e.g. a “double press” or a “press and hold”) to various light/color patterns (e.g. double or triple blink, or sequential blinking, etc)
  • Upload the program from your computer to the Arduino and run the program
  • Troubleshoot (if necessary)
  • Document your process and be ready to explain what each line of the program does (remember: include image files of the schematics and breadboard views in Fritzing. Copy & paste the Arduino code into your blog post)

Exercise #5, Due T, Week 5 (02/25)

Analog Input/Output
You will need the course code repository on GitHub

Look at the tutorial on the ITP physcomp labs site: for more details

Part I:

  • Open the Arduino environment and open the AnalogBasics example located in Arduino/Basics/Analog (AnalogBasics.ino)
  • Read the code & comments carefully (refer to the Potentiometer Tutorial on the Arduino site)
  • Upload the program from your computer to the Arduino and run the program
  • Troubleshoot (if necessary)
  • Modify the circuit and/or code (see suggestions in the comments of the AnalogBasics.ino file) – I want to see new code (.ino) and Fritzing (.fzz) files!
  • Upload the program from your computer to the Arduino and run the program
  • Document your process and be ready to explain what each line of the program does (remember: include image files of the schematics and breadboard views in Fritzing. Copy & paste the Arduino code into your blog post)

Part II:

  • Open the Fritzing environment and open the AnalogSensorsAndVoltageDivider example located in Arduino/Basics/Analog/BreadboardAndCircuitDiagrams (AnalogSensorsAndVoltageDivider.fzz)
  • Write code to read all three sensors and control the blinking rate of three LEDs
  • Upload the program from your computer to the Arduino and run the program
  • Troubleshoot (if necessary)
  • Modify the circuit and/or code (see suggestions in the comments of the AnalogBasics.ino file
  • Upload the program from your computer to the Arduino and run the program
  • Document your process and be ready to explain what each line of the program does – remember to show all necessary screenshots, code, etc

Part III:

Pulse Width Modulation (“Analog Out”)

  • Run the examples located in Arduino/Basics/Fade
  • Modify the examples in Part II to use sensors to control the PWM (Pulse Width Modulation) rate (and thus the blinking rate of the LEDs). Hint: you are going to have to map the values of the sensor (somewhere around 0-1023) to pwm values (0-255)
  • Can you make the fading smoother, by altering the circuit instead of the code? Hint try Googling “low pass filter or “rc circuit”
  • Give up? Go here
  • Document your process and be ready to explain what each line of the program does – remember to show all necessary screenshots, code, etc

Part IV:

Experiment/get creative:

  • Try different sensors (see the FSR and IR sensor Fritzing examples)
  • Substitute relays for the LEDs in part II*
  • Consider ways you could change the program and the breadboard hookup. Consider what kind of events you could orchestrate.
  • Document your process and be ready to explain what each line of the program does – remember to show all necessary screenshots, code, etc
* Steps in Replacing Led with Relay

Connecting a relay to Arduino

Before you do anything, you need to take certain steps:

  1. Discover the pin layouts: Different relays have different arrangements of pins. You will not be able to do anything without knowing the pins. You can get the documentation by reading the identification information off your relay and going on the web. See the pinout for sample relay in the kit above. (Our example is the Axiom D2n 5v relay.)
  2. Make sure the relay works – test it without the Arduino. Which are the activation pins? you will need to get that from the documentation. You should test it by applying voltage to the pins before you attach it to the Arduino. You need to know the activation voltage/power. Our example has 5v/low power. Get out your power supply. Set it for 6v. Polarity will generally not matter for this test. Set the Multimeter to resistance (ohms). Hook up the multimeter to the output pins of the relay. You will need to discover which are the output pins. Use the common and the normally open pin (that is the pin that is normally not a complete circuit unless the relay is activated.
  3. In this example you are using the multimeter as a test circuit. Eventually you would need to put some circuit in with its own power supply. This test works because the multimeter has its own battery power built in. ***It is often wise when building circuits to use the multimeter before you put in any other components. In this case it will telli you that the circuit is complete/closed because the 2 ends of the multimeter show 0 ohms when there is a continuous circuit (closed). They show infinity (1 on a digital meter) when there is no complete circuit (open).
  4. See if the relay works without Arduino. Apply power from your power supply to the activation pins – probably best with alligator clips. Take the power off the activation pins. You may hear the relay click when it is activated and again when deactivated. A simple indicator can be to run the multimeter (set to resistance) through the relay. It will indicate 1 (infinite, no connection) when the relay is not on and 0 when it is. (The arduino digital out signal is supposed to be powerful enough to activate this relay.)
  5. Substitute the relay for the led circuit: This is typically a good way to work. Test every component before you hook up the whole circuit. Does the multimeter work? does the relay work? Do you understand the relay pins? If yes, you are ready to go. Hook up the activation pins of the relay to one of the digital out ports of the arduino board. Substitue it for the led in program T3. (You could adapt the blinking led program in T2 or any other program.) The relay will be hooked only to 1 digital out pin. Your program will need to turn the pin to one status to turn on the relay when the photocell is beyond your threshold and turn it to other status when the values are below the threshold. See diagram above the flowcharts. (The arduino digital out signal is supposed to be powerful enough to activate this relay.)



Project 1, Due Th, Week 6 (03/06)

Prototype for a Human-Machine Interface
Using the skills you have gained up to this point (basic electronics, sensors and Arduino programming), design and construct a prototype for an interactive human-machine interface that lives in the real world of physical objects. This will be a prototype for an art object/installation/system that explores the ideas and topics that have been discussed thus far: tangible computing, activated objects, physical computing, interactivity, embodiment, identity, and/or human-machine coupling. Concentrate on the interactivity and interface as opposed to detailed functionality (e.g. if your idea is to pull data from the Internet, you can mimic these operations, concentrate on the physicality or the “human” side of how to do it) **Note this project should be limited in scope so it can be accomplished in 2 weeks.

You will mock this up (diagrams, circuit schematics, sketches, illustrations, etc) and present it to the class. Clearly and physically show what it is, how it would work and communicate the experience of using it, interacting with it and living in a world where it was real. You will also write 1-2 paragraphs explaining your idea. You will post this on your blog and present it to the class.

Prototype: You will also present a simple prototype that demonstrates the idea and some aspect of how the system would work (e.g. read data from a sensor, blinking LED patterns that form some kind of communication protocol, etc). You will also post this on your blog and present it to the class. Make sure to document your protoyping processes (photos, video, etc) as well as the final results.

Some ideas for formulating your project

  1. Come up with an idea that you want to work on – for example, some issue in culture, some objects with strong valence for you, some kind of formal concerns (e.g., lights, sound, motion) that interest you.
  2. Think some way to use the context of physical computing to explore those ideas.
  3. Sensors – What do you want to sense? Remember you are not restricted to formal sensors. With some ingenuity you can convert just about any actions in the world into electronic signtals – people presence/absense, motion, moving or manipulating objects, sequences of actions….Anything that can be converted to making or breaking continuity can be seen as a switch.
  4. Actions – What do you want to activate? Lights, sound, actions of objects…. Remember you are not restricted to formal electronic objects. For example, lights can illuminate words or images on translucent sheets, the sounds you activate and their relative position can carry cultural meanings. Objects can be retrofitted to represent items of importance to you – for example a toy radio controlled car can be used as the chasis for moving around anything you think that makes sense.
  5. Connections – How do you want to link the sensors and the actions. You would need to program the Arduino to enact those ideas. Explore timing and sequence (e.g. maybe an action in the physical world has to occur immediately after or before another action for the system to respond)

Upload everything to your blog by the due date and be prepared to present it in class

Project 2, Due T, Week 9 (04/01)

Interactive Art Object
This project is really open-ended. The only real restriction is that it must be some working interactive art object, possibly related to the themes, concepts or medium (e.g. sensors) from Project 1. You may assemble into small groups (and indeed are encouraged to) and decide, based on your previous projects and research, what kind of project you would like to do. Consider integrating skills you already have (e.g. sculpture, instrument making, dance, etc) into this project. The core requirement of this assignment is that it must look and/or behave like an artwork (as opposed to say a cool Make or Instructables project) and it must work (with few or no bugs or technical issues)

Make sure to document as much as you can

Upload everything to your blog by the due date and be prepared to present it in class

Final Project: Proposal Due Th, Week 10 (04/10), Project Due T, Week 15 (05/13)

Mapping and Interacting With Environmental Data: Lake Merced CoLab
Collaboration with Paula’s Artist as Cartographer course (ART 511.1)

Project blog:

Lake Merced is a fresh water lake located within the city of San Francisco. It is one of two lakes of this kind within the city, the other one being Mountain View Lake, in the Golden Gate National Recreation Area. It is a natural body of water, first described by a member of Juan Bautista de Anza’s exploration when he landed in San Francisco, in 1776.

Lake Merced once functioned as a water source for residents, later an active site of recreation. Now, it suffers from a myriad of environmental challenges. It remains an important part of the city’s watershed system and is home to a vast number of animals and bird life, including migratory species.

Lake Merced is within walking distance from the SFSU campus however if you ask anyone the last time they visited the site; chances are it would not be recently.

This project is a rediscovery, or making a new discovery of Lake Merced, using what you learn or experience to become the impetus for a public site-specific project. This can be a series of maps, public walks, tours, games, books, public intervention, sound installations, data visualizations, performances, or something not listed. It should be in a form that other people can share through participation or as an audience. The projects will combine and/or be complimentary with the projects from Paula’s Artist as Cartographer course, with which we will be collaborating. Projects, experiments, research between the two courses should relate, intervene, augment, address or have some specific relationship to the environment in which they are located. All will be using tools you are learning in both classes.

You will be working in small groups composed of people from both classes. Projects, topics and designs will be the focus of your collaborative research, as well as discussions within the class. The schedule for production will be determined collectively through class discussions, where we will also determine and clarify the scope, scale and focus of the projects.
Your blog entries should reflect your research, readings, sites, notes, images, etc. Your grades are based on both process as well as the final projects.

Project Blog
The project blog will be a shared space for this collaborative project. Everyone will have access for posting. Keep your individual process blogs ongoing, but use this shared blog to add to the collective knowledge for the project.

The project will take place in 5 steps (subject to change):

  1. Research: Learning about the site
  2. Development of project ideas
  3. Selection of project focus
  4. Execution of projects
  5. Documentation, Presentations, Critiques

We are embarking on a project that may call for a different way for many of you to work. It is a project that involves experimentation, exploration, art making, problem solving and research. We are all creating new ground in this project, using our tools, observational skills, recording skills and experiences to create some kind of relationship or response to the Lake Merced site. So in the words of the poet, Mary Oliver: Pay attention. Be astonished. Tell about it.


Course Discussion Group

Everyone must join the course discussion group the first week of class. This is a Google Group for discussion of course topics, announcements, sharing of links, ideas, technical support, etc. It is the primary method of communication I will have with all of you outside of class


We will be using SFSU’s iLearn system for portions of the course. Please check it frequently.

Example Code & Circuit Diagrams

You will need to download the repository at This contains code and circuit diagrams that you will need for your exercises and projects. If you are familiar with GitHub or other version control systems you may clone this repository to your computer or even fork it and have your own open source code repository that you can share with others. I will be adding to this repository as the semester progresses.

Arduino, Electronics & Physical Computing

Arduino Home
Arduino Playground (wiki with lots of tutorials, code, etc)
Fritzing Home (Circuit Diagramming and Breadboarding Software)
Max Wiki (great resource for learning Max/MSP/Jitter)
ITP Electronics & Physical Computing Tutorials (Great resource!)
Electronics Club: Studying Electronics
Seattle Robotics: Really Basic Electronics
All About Circuits (the name says it all)
Transistor Tutorial
ITP/NYU Transistor & Relay Tutorial
Connecting a relay to Arduino
Sensor Wiki
Some cool materials: Velostat, Conductive Paint, Conductive Pen, Indium Tin Oxide Coated (Conductive) Glass
Open Materials (lots of cool stuff here!)
ITP’s list of Organic & Smart Materials
Basic Electronics Exercises (Michael Shiloh, great learning resource!)
Voltage Divider Tutorial
Resistor Color Code Chart
Steve Wilson’s Art, Technology, Science & Culture Links

Make Magazine video series on basic electronics with Collin Cunningham (great resource!)

Plenty more at

Health & Safety

Working with computers and electronic devices poses certain hazards to muscles, sight, posture. Students need to be aware of these dangers and the precautions that can be taken.  Please consult the CIA health and safety guidelines 

Special Issues with Electronics

Electricity and electronics have some dangers associated with them – for example, electrocution, toxic materials.  Students will be taught safe procedures.  Most of the course will concentrate on low voltage electronics which generally will not do much damage. 110 v AC (wall plug current) on the other hand can be quite dangerous. Students may not work on 110v projects unless they are cleared by the professor or graduate assistant. Any student working on these kind of projects without clearance or other unsafe processes may be asked to withdraw from the course.

Safety guidelines for working with electronics
Personal safety:

  • Keep dry, wipe hands, avoid spills, don’t work in wet environments – liquids make for much lower resistance.  Wet skin conducts much easier than dry and increases shock danger.
  • Avoid contact with soldering irons; they get very hot and burns are possible.  Avoid molten solder.  Avoid putting soldering irons down in areas where they can melt wires etc.
  • Conventional solder contains lead.  Work in well ventilated spaces.  Avoid direct inhalation of solder fumes.
  • Wire cutters and strippers can also cut skin.  Exposed wires are sharp and can cut. Use pliers to manipulate wires if  possible.
  • In this course no one should work on 110v circuits unless cleared by professor. When working on authorized projects, avoid direct contact with 110v sources, watch for frayed wires, disconnected grounds, inadvertent contacts between 110 and low voltages systems – eg wires touching.  If working with 110, turn off power while constructing circuits, inspect for open wires.  Work with one hand if possible putting the other in pocket ( thus avoiding circuit path to ground).  Wear shoes.  Take off metal jewelry.   If someone does get shocked, turn off power supply immediately if possible.  Don’t touch person directly, try to use insulating material (such as broom handle or rubber material) when moving them to safety.

Equipment safety:

  • Low voltage components are easily damaged by high voltages. Even static electricity can damage components (such as rubbing your hair). Ground your body by touching metal chasis or pipes before working.  Try to avoid touching metal leads and pads. Store components in static free bags.  Use a grounding wristband if possible.
  • Components can be damaged by excessive voltages.  Read specification sheets to determine voltage limits. Start out with lower voltages and work up.  Test sources with multimeter.
  • Components can be damaged by reversed polarities.  Make sure you understand what the component is designed for.  Test the circuit to check polarities.  Learn how to use the power supplies.
  • Computer components are especially vulnerable.  Be very careful about what voltages you expose the Arduino to.

Additional resources:

Student Blogs

Student Name Blog URL
Kyle Bray
George Carpenter
Jessie Fein
Adrienne Jan
Sepehr Mashiahof
Leslie Ngo
Jeff Yip