by on Intermediate Arduino Class

A video generating box inspired by the Lumia compositions by Thomas Wilfred in 1930s. Idea is to create a live video micro-set using means and methods I employ in live film performances. Box will have dynamic LED lighting, live video camera and various shiny and/or translucent objects in motion. Result hopefully is an abstract animation that can run “for ever” with no further human input.

by on Arduino


  1. Download and copy image from to sdcard.
  2. ssh to the device
  3. expand the file system using raspi-config
  4. sudo bash; apt-get update; apt-get dist-upgrade
  5. apt-get install arduino xrdp


by on Intermediate Arduino Class

Leading Questions:

  • What do you know?
  • What do you not know?
  • What Would be most helpful for you as an artist?

Whiteboard from “what do you know?”


(as a bullet list)

  • I/O -> Massage -> Outputs (james)
  • AD -> I/O -> Midi (christiano)
  • Sensors -> Control movement / sound (gail)
  • The Unit is robust/stable (julie)
  • I/O ->  Lights -> Sequences/Processing (nance)
  • The hardware is diverse (nance)
  • Max/MSP/Processing -> Motors/Blinkin Lights

The Original Proposed  Topics.

  • Midi / Sound
  • Sensors
  • Motors and Motion Control
  • High Voltage
  • Build Your Own Arduino / Soldering,
  • Advanced communication /Networking
  • Programming, Datasheets, Hardware

(Projects whiteboard)IMAG0316

Not sure how to go from 3 hour whiteboard session to wordpress site. But we are going to figure this out.










  • Video Processing -> BL
  • Rotating Projector
  • Hacking Existing Hardware
  • El/paint -> Sound Processing -> Display
  • leap motion -> motor control
  • sound processing -> output
  • sound processing with control













 Therefore Pi!

Out of the 7 projects 6 of them would best be done with a computer and the arduino. For that reason we suggested (and decided) to go with a Raspberry Pi / Arduino combination.
















Resulting proposed lectures

  • Pi Setup /PD
  • Communication
  • Sensors
  • Motion Control

by on Arduino

Once again find myself in a windowless cube. So I 3d printed a varient of a compact camera gimbal and attached an rpi camera to it.  I needed to set up a serial based protocol to talk to it. Its a pretty good example of creating your own protocol as described in the Physical Computing book. The gimbal is servo based and there is one servo for rotation or “yaw” and one for attitude or “pitch”. So the protocol I came up with was:


where XXX represents a number between 0 and 180 (servo values)

Here is the code.

  demonstration of a private protocol.
  we have a serial connected device that has two servos attached to it. 
      one controls the pitch (up and down) 
      one controls the yaw (round and round)
  we send it lines of text in the form 
  where s is:
    pnnn -- pitch value (0-180)
    ynnn -- yaw value (0-180) 
  Normally it doesnt respond unless weWANNADEBUGTHIS or if it doesnt understand us
  in this case it replys with ?????

#include <Servo.h>
#include <stdlib.h>

#define YAW_PIN 10
#define PITCH_PIN 9
#define YAW_HOME 60

#define PITCH_HOME 35
#define MAXCHARS 10

Servo yaw;
Servo pitch;
char inputBuffer[MAXCHARS];
boolean inputBufferReady;
int inputBufferIndex;

void setup()
  // initialize the serial communication:


boolean gotDataLine (void){
  char inch;
  if (inputBufferIndex>=MAXCHARS) {
  if (Serial.available()){
    //Serial.print("I received: "); Serial.println(inch);
    if ((inch == '\n') && (inputBufferIndex>0)) {      // I dont want this charachter
      inputBufferIndex--;    // "dtmfa" - dan savage
      return false; 
    if ((inch == '\r') && (inputBufferIndex>1)) {
        return true;
  return false;

void loop() {
  int myValue;
  if (gotDataLine()) {
    if (myValue>180) myValue=180;
    if (myValue<0) myValue=0;
    switch(inputBuffer[0]) {
      case 'p' : 
                 Serial.print("Setting pitch to ");
      case 'y' : 
                 Serial.print("Setting yaw to ");
      default:  Serial.print("?"); Serial.print(inputBuffer); Serial.println("????");


by on Arduino


I have been teaching Physical Computing for Artists with the Arduino Uno for over a year now and this year I decided to move to the Leonardo with the hope that a USB-Midi based core will be finished sometime soon. Its cheaper than the uno and it has a serial port that isn’t busy and best of all it doesn’t reboot every time you talk to it.

I usually introduce background tasks using the Timer1 library since it makes timers manageable for the novice. However the existing Timer1 and Timer3 libraries are not currently avaliable for the leonardo (or any of the 4 32u4 based processors). Fortunately there is a “port” of the library for the Teensy2.0 at, for some reason the leonardo is missing from the boards supported but no matter the fix is pretty easy and now I can get back to teaching.

diff ~/Downloads/TimerOne/config/known_16bit_timers.h TimerOne/config/known_16bit_timers.h 
< // Teensy 2.0
< //< 
< // Teensy 2.0
< //
< #elif defined(__AVR_ATmega32U4__) && defined(CORE_TEENSY)
<   #define TIMER1_A_PIN   14
<   #define TIMER1_B_PIN   15
<   #define TIMER1_C_PIN   4
<   #define TIMER1_ICP_PIN 22
<   #define TIMER1_CLK_PIN 11
<   #define TIMER3_A_PIN   9
<   #define TIMER3_ICP_PIN 10
> // mega34u4
> // Ehem: it would be nice to figure out the sparkfun micro-pro
> // and the adafruit u4 stuff as well.
> #elif defined(__AVR_ATmega32U4__) 
>     // Teensy 2.0
>     #if defined(CORE_TEENSY)
>         #define TIMER1_A_PIN   14
>         #define TIMER1_B_PIN   15
>         #define TIMER1_C_PIN   4
>         #define TIMER1_ICP_PIN 22
>         #define TIMER1_CLK_PIN 11
>         #define TIMER3_A_PIN   9
>         #define TIMER3_ICP_PIN 10
>     // otherwise assume Leonardo/micro/esplora
>     #else 
>         #define TIMER1_A_PIN   9
>         #define TIMER1_B_PIN   10
>         #define TIMER1_C_PIN   11
>         #define TIMER1_ICP_PIN 4
>         #define TIMER1_CLK_PIN 12
>         #define TIMER3_A_PIN   5
>         #define TIMER3_ICP_PIN 13
>     #endif

by on Open Hardware Summit

The Open Hardware Summit is becoming my favorite event of the year. It’s a great cross-section of what people are doing with hardware. I had submitted a talk about ethics and labor in computing, but the talk was rejected. I didn’t feel bad about it because I was confident that the organizers would pick a good mix of speakers this year. I was completely right! The keynote this year was given by Eben Moglen who stressed to us the importance of open hardware and software as a means to help our communities and as a potential tactic in unfolding capitalism. This spirit seemed to continue through the conference, although not completely since the OSHWA membership is largely pro-capitalist.

Around the conference I got to meet Don’s friends from ITP Summer Camp. Everyone from that group is doing interesting things. I got to talk about Nintendo stuff, as I did a Nintendo-themed art piece earlier this year. Jonathan Dehan showed me his work in helping people make their own ROM hacks of Super Mario Bros.
Super Mario Bros Clouds

The big lesson this year was learning how to be tactful. I ran into my ex-employer a lot, which was awkward, so I had to pull up a lot of courage to even address it and apologize for being rowdy previously. I had hoped for an apology from him, but I realize that it will never happen and I had to be the better person. I think I grew a bit personally.

I was most excited about the women’s dinner that followed the summit. I am not usually one to go to all-women’s events but considering that most of the organizers and key players of the open hardware movement are women, I thought I’d go. I’m glad I did! I had so many wonderful conversations with everyone. It was actually very comfortable to finally talk shop without the weird overhead and baggage that can come from being in a mixed space. I met a friend’s roommate by accident who told me about PCBmodE. I also met Erin aka RobotGrrl who suggested I try out gEDA. I got to talk to people who were going to China to see how the work conditions are, and I talked to other artist-hackers. Overall I had a really positive experience this year.

See all my snapshots on Flickr!

by on Arduino

Arduino for Artists.

(The class formerly known as Physical Computing for Artists)

During the summer break Donald Delmar Davis went to ITP Summer Camp 30 days of more intersection between art and technology than anyone can take in. He is hoping that he can use what he learned to teach more artists about how to integrate the arduino into their tool set. This year he will be working with the Arduino Leonardo with the intention of bringing midi and other usb clsses into the Arduino’s capabilities.

Tube Amplifiers.

During the summer Mark Keppinger piloted a new class that he is offering this fall. In the class you get to build and take home a tube amplifier (for your guitar, iPhone/iPod, etc). This includes both the electronics and the cabinet to hold it.

by on Site News

A while ago I posted an opinion about sharing and the point of openness. It was intended to be focus of conversation and so I took a stance that was controversial and was thoroughly attacked for it. It happens a lot more that we would like. A few months later I overheard Bre Pettis talking about physical threats of violence over not completely opening the hardware designs for his product. I understood both sides of the argument however I could not understand the state of our world in terms of its inability to have real discourse with compassion and respect without hatred and violence. Reading the comments section of almost any major news or opinion piece or even hanging out in the average technical IRC channel makes me want to cry.

And so I stopped sharing and posting, withdrew and shut down.

But its still all out there effecting people I love and respect. This internet thing seems to have no filters, knows no bounds in its capacity to hurt people with things that they have no control over. Even as I stop participating the conversations and ugliness come around through the people close to me.

Somehow we’ve got to be better than this as people.

Starting with me.

I realize that I can be harsh and opinionated. I have said some things over the course of the years that I am ashamed of and I am sorry.

I am working on that.

I hope to be less judgmental and more constructive as I try to promote the projects that I care about and share what I learn along the way. I think you will find me very hesitant to have a personal opinion but I believe that is just the nature of the beast. I hope that someday we can learn to have opinions and constructive dialog out here on the net without tearing each other down.

In the mean time I am trying to open up again.