July 27, 2010 11:42 AM
Capacitive Sensing - PuppetMaster v.1-v.2
by Anna Kaziunas FranceMy final project for Fab Academy is a universal remote I am calling PuppetMaster, due to its ability to control out of reach objects / devices using the fingers. This post details the PuppetMaster boards v.1 - v.2 that use capacitive sensing.
The first working version of the prototype uses capacitive sensing built on the Hello World Step response example, but converted for use with a attiny 44.
I fabbed the board(s) myself, using the standard fab inventory parts.
However, there was a issue with this initial board and I could not get the modified code for the attiny 44 to work with the Hello.Step.45.py code. I attempted triage, but the board remained flaky. There seemed to be an issue between the ground pin on the chip and power.
In addition, I realized that I routed the Tx to Rx wrong on the FTDI header pins. I was using jumpers to work around it initially, but after the version 1 board’s persistent flakiness, I decided to make a version 2 board. I am not including the schematics & Eagle files for version 1 because of these issues.






I ran out of time in the lab and did not get a chance to mill out the board. Instead, I scored the perimeter with a utility knife and broke off the excess edge. Then I used a rasp to file the edges down.



July 27, 2010 11:28 AM
Hello FTDI Step Response
by Anna Kaziunas France
My first step in building this project was to start with the basics. I milled, stuffed and programmed the hello step response board (modified to use the FTDI header by Shawn Wallace). I have a Mac and I can’t troubleshoot / develop at home with the serial header examples.
I am using terminal in OS X 10.4.11Â - this was the terminal command I used to run the hello step response example and what it will say when it can communicate with the board and begin plotting the graph.
Anna-Kaziunas-Computer:~/Desktop/fab_runs/step annakaziunas$ python hello.step.45.py /dev/tty.usbserial-A600dVDy finding framing ... start plotting 0
Here is a screenshot of the charging graph that is produced by Neil’s hello.step.45.py code. This initial charging graph shows the capacitor charging up.
I used thin copper sheets to create the capacitor to test the hello step response board. I hooked them up to jumper wires. When they copper sheets are touching or close to it, the graph will spike up. This indicates that current is flowing through the circuit. When they are far apart the graph will flatten out. This indicates that the circuit is not connected.
For a video of this type of capacitive sensor in action - see the Puppet Master posts.
May 12, 2010 1:08 PM
Levitating Elephant
by Noah BedfordI wrote a small clutter program to change the position of a picture of a Muybridge elephant based on the output of the step response board:
hello.elephant.py
This is the code that runs on the FTDI version of the step response board
![]()
April 28, 2010 10:05 AM
Servo motor mosh
by Jenine BressnerHere is a very brief clip of a nodding head.
I attached a doll head that I sculpted (with flameworked glass eyes) to a servo motor. This will be part of a larger diorama of dancing automatons that I'm working on.
March 17, 2010 11:02 PM
Motion Sensing Glow Skull
by Anna Kaziunas FranceI am ready for Halloween early this year. For my I/O sensor project for Fab Academy I put together a Arduino-controlled motion sensing glowing skull. When motion is detected by the parallax motion sensor, the board turns on the LEDs in the mouth and fades in and out the LEDs glued into the eye sockets.
The code works - but needs to be modified, right now after the motion is activated, the lights stay on / fade in and out in an infinite loop until the power is switched off. Look for an update to this post.
/* -----------------------------------------------------------------
Anna Kaziunas France
--------------------------------------------------------------------
Fab Academy - Sensors I/O Module
Glowing Skull Project
03/02/2010
--------------------------------------------------------------------
Motion Sensor code:
Motion Sensor code:I have seen this code a few places,
it is never attributed to anyone in particular.
I saw it last at: http://www.ladyada.net/learn/sensors/pir.html
--------------------------------------------------------------------
LED Fader code by: By David A. Mellis - Created 1 Nov 2008
Modified 17 June 2009: By Tom Igoe
http://arduino.cc/en/Tutorial/Fading
--------------------------------------------------------------------
Combined / Modified by Anna Kaziunas France - 03 March 2010
--------------------------------------------------------------------
--------------------------------------------------------------------
Purpose of this Program
--------------------------------------------------------------------
Read input value from the sensor
Determine if motion is present (input is HIGH)
When motion is detected via motion sensor:
1. Eyes slowly glow red (fade in and out - continue)
2. Mouth glows (steady)
When motion is not detected after (length of time)
Switch off LEDs
------------------------------------------------------------------*/
// Variables
int ledPinSolid = 13; // choose the pin for the LED
int ledPinFade = 11; //
int inputPinSensor = 2; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
void setup() {
pinMode(ledPinSolid, OUTPUT); // declare Solid LEDs as output
pinMode(ledPinFade, OUTPUT); // declare Fader LEDs as output
pinMode(inputPinSensor, INPUT); // declare sensor as input
Serial.begin(9600);
}
// Begin Motion Detection
void loop() {
val = digitalRead(inputPinSensor); // reading input value
if (val == HIGH) { // if the input is HIGH
digitalWrite(ledPinSolid, HIGH); // turn LED ON
// sets the value (range from 0 to 255):
analogWrite(ledPinFade, HIGH); // turn LED ON
// fade in from min to max in increments of 5 points:
for(int fadeValue = 0 ; fadeValue < = 255; fadeValue +=10) {
// wait for 30 milliseconds to see the fade in effect
delay(400);
}
// fade out from max to min in increments of 5 points:
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=10) {
// sets the value (range from 0 to 255):
analogWrite(ledPinFade, fadeValue);
// wait for 10 milliseconds to see the dimming effect
delay(110);
}
if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected Huzzah!");
// We only want to print on the output change, not state
pirState = HIGH;
}
}
else {
digitalWrite(ledPinFade, LOW); // turn Fader LEDs OFF
digitalWrite(ledPinSolid, LOW); // turn Solid LEDs OFF
if (pirState == HIGH) {
// we have just turned of
Serial.println("Motion ended");
// We only want to print on the output change, not state
pirState = LOW;
}
}
}
Capacitive Sensing - PuppetMaster v.1-v.2