March 2010 Archives

March 31, 2010 11:07 AM

Best Error Message Ever

by Anna Kaziunas France

best_processing_error_ever.jpg

March 31, 2010 9:07 AM

Using a GUI to Control Processing Output with ControlIP5, Firmata via Serial

by Anna Kaziunas France

I created this simple interface to control turning on and off an LED that is attached to a microcontroller via the serial port on my Mac. I wanted to see if I could get the ControlIP5 (used to create the GUI), Firmata and serial libraries working together before I tried using more complex hardware. I intend to experiment with driving multiple servos and possibly tinkering with bluetooth using the NXT library as an "cheap" way (it's "cheap" because I already own the Mindstorms hardware) to play around with bluetooth without buying additional bluetooth modules.

The Interface: Default / Initial State:

The interface is simple - the Turn On button turns the light on and the Turn Off button turns it off. None_selected.png

The Interface: Button Rollover State:

rollover.png

Here's the Processing code:


/*-------------------------------------------------------------------
 * Fab Academy -- Module 09: Interface Programming
 *--------------------------------------------------------------------
 * Assignment: Write a user interface for an input &/or output 
 * device.
 *--------------------------------------------------------------------
 * Purpose:  This program is a test to get the controlIP5, Firmata, 
 * and serial libraries working together through the serial port.  
 * This program uses a simple button GUI interface to turn on / of an
 * LED.
 *--------------------------------------------------------------------
 * Anna Kaziunas France - 30 March 2010
 * Combined / Modified example code from:
 * controlIP5 buttons example (included the library download)
 *------------------------------------------------------------------*/


import processing.serial.*;
import cc.arduino.*;
import controlP5.*;

ControlP5 controlP5;
// we have to use controlP5.Button here since there
// would be a conflict if we only use Button to declare button b.
controlP5.Button b;
Arduino arduino;

// Variables
int ledPin = 11;
int buttonValue = 0;
int myColor = color(0);

void setup() {
  arduino = new Arduino(this, Arduino.list()[2], 57600);
  arduino.pinMode(ledPin, Arduino.OUTPUT);
  size(640,480);
  smooth();
  frameRate(30);
  controlP5 = new ControlP5(this);
  controlP5.addButton("Turn_On",255,200,80,100,70);
  controlP5.addButton("Turn_Off",0,200,160,100,70);
  println(Arduino.list());
}

void draw()
{
  background(myColor);
  fill(buttonValue);
  rect(20,20,width-40,height-40);
}

public void controlEvent(ControlEvent theEvent) {
  println(theEvent.controller().name());

}

// function buttonA will receive changes from 
// controller with name Turn_On
public void Turn_On(int theValue) {
  println("a button event from Turn_On: "+theValue);
  myColor = theValue;
  arduino.digitalWrite(ledPin, Arduino.HIGH);
}

// function buttonB will receive changes from 
// controller with name Turn_Off
public void Turn_Off(int theValue) {
  println("a button event from Turn_Off: "+theValue);
  myColor = theValue;
  arduino.digitalWrite(ledPin, Arduino.LOW);
}

March 31, 2010 12:35 AM

Pure Data Frequency Modulator

by Elliot Clapp

March 30, 2010 12:45 AM

DIY hobo game controllers

by Shawn Wallace

IMG_0285.jpg

These DIY game controllers are made from pennies and cigar boxes.

IMG_0287.JPG

They are a sample controller for the Fluxly video game, a wizard duel where you have to build your own controller to compete. The interface for the game is implemented in Actionscript and compiled using Adobe's free mxmlc compiler.

March 29, 2010 10:37 AM

My favorite python/GTK reference

by Noah Bedford

March 22, 2010 12:24 PM

A soldering video tutorial

by Jenine Bressner

I demonstrate soldering components onto a step response circuit board that was milled on a Modela CNC router. My technique is informed by my soldering experience in silversmithing.

At first, the camera wouldn't focus on close- up shots. Brandon had the great idea of placing a magnifying lens in front of the camera. This setup worked wonderfully! IMG_3692.JPG

March 20, 2010 11:24 AM

Fab ISB - Round 1: Milling Out The Board

by Anna Kaziunas France

Today I milled out my first PCB on the Modela. Technically it is not a “printed circuit board”, but machined out of copper-clad PCB stock.

milling board

Fab Academy Assignment

The assignment is to design a circuit board, mill it, and program it in assembly language. This post documents Part 1 of this process which entails:

  • Designing the board (For this board I used the already created Fab ISP board file - I plan to design a board for a later project).
  • Machining the board

Part 2 will document the process of putting the components into the board. Each student had to become acquainted with the following work flow:

  • Stuffing components
  • Programming

The first step in making a board is to create a tool path to send to the machine:

To Mill the Board:

  • Import a PNG image into cad.py.
  • Create the tool path in cad.py
  • Send to the Modella

Fab ISB

To Cut through the Board:

  • Import the border PNG image into cad.py
  • Create the tool path in cad.py
  • Send to the Modella

Border

March 17, 2010 11:02 PM

Motion Sensing Glow Skull

by Anna Kaziunas France

Voodoo Glow Skull

I 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 Fab Academy Assignment

  • Interface an input device with an output device.

The Project: Motion Sensing Glowing Skull

Voodoo Glow SkullVoodoo Glow SkullVoodoo Glow Skull

Parts List:

  • 1 Parallax PIR [Pyroelectric ("Passive") InfraRed)] motion sensor
  • A few lengths of wire
  • 1 Arduino compatible board (I used a Seeduino (Seeed Studios) I had laying around). I like this board because I can flip the power source switch to turn it off / on.
  • 1 9 volt battery
  • Mouth: 10mm Red LED (3)
  • Eyes: 5mm Red Wide-Angle LED (2)
  • 5 in or so metal strip with holes (to house mouth LEDs
  • 3 plastic LED holders (to insulate the mouth LED wires from the metal strip)
  • super glue / hot glue

Prototyping the Circuit / Interaction + Putting It Together:

prototypingprototyping - jumbo LEDprototypingprototypingprototypingsoldering the motion sensorLED harnessLED harnesssoldering wires / LEDgluing LEDs into eye socketsclose upskull wiringwiring containerwiring container openall wired up - ready to testGlow!

Code:

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.

Arduino code for the LEDs and Parallax PIR Motion Sensor:

/* -----------------------------------------------------------------
 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;
    }
  }
}

Skills Learned

  • Basic wiring
  • Modifing Arduino code
  • How to read a sensor datasheet

Tools Used

  • Arduino
  • Paralax motion sensor

March 17, 2010 8:52 AM

The Gellerizer

by Elliot Clapp

gellerizer1.jpg

gellerizer2.jpg

gellerizer3.jpg

gellerizer5.jpg

gellerizer6.jpg

gellerizer7.jpg

gellerizer8.jpg

gellerizer9.jpg

gellerizer10.jpg

March 9, 2010 8:03 PM

Completed TARDIS Cast | Working Light

by Anna Kaziunas France

finished model

This project went through many adaptations and in the end, it did not turn out as a blue box, but more like a weathered garden statue. The hydrostone did not turn out completely white, but grime on the urethane molds made little swirls, further enhancing the marbleized look. It is not bigger on the inside, but the wiring and battery did fit nicely within the internal cavity. A switch turns it on and off. Although this endeavour did not turn out exactly as planned, I learned many things about thinking in 3D and many more about construction and molding objects in 3D.

So what makes this model a “TARDIS” not just a model of a British police box that looks like a light-up garden statue? Honestly, nothing but my intent. I set out to make a model of the TARDIS and that is what it will be called.

finished modelfinished modelfinished model

The process I used to create this model:

Previous Posts:

  1. I designed the TARDIS in Google Sketchup. > See Previous Post: TARDIS: 3D Modeling

  2. I used the Modela to mill out the front, 3 individual sides and roof of the model in machinable wax. > See Previous Post: TARDIS: Moldmaking

  3. I used the block of machinable wax to create urethane molds of each of the pieces. > See Previous Post: TARDIS: Moldmaking

Laser-Cut The Casting Container:

  1. I designed and laser cut an adjustable press-fit box to place the individual urethane molds in order to cast the TARDIS in hydrostone. (I also custom-cut shims to key in the urethane mold edges.)

Inside BoxInside BoxTaped Up Boxpreparing to castrubber moldInside Box

Putting Together the Casting Container / Aligning the Mold:

  1. When casting, I did my best to align the sides and roof together at the appropriate angles and hoped for the best. An additional laser-cut box with an empty pen casing was inserted into the larger mold when pouring the hydrostone in order to create a cavity for the wires to run form the LED on the top through the cast down into the base where the wiring, battery and other components are housed. The inside box then became part of the cast.

taped up boxpouring castcastingBox RemovalRemoving the BoxRemoving the boxremoving boxCastRemoving the BoxBox Parts - Mess

Removing the Casting Container:

  1. When taking apart the mold, I found that some of the fine details of the windows and the moldings became stuck in the urethane mold or broke off easily. I may not have mixed the hydrostone long enough, or there may have been an issue with the proportions I used. Further experimentation is this matter is needed to determine the source of the problem. This breaking away of the fine detail gave the statuette a weathered appearance, like a tombstone left out in the elements.

Freshly CastFreshly CastFreshly CastFreshly CastFreshly CastFreshly CastFreshly CastFreshly CastFreshly Cast

Adding the Electrical Components:

  1. In addition - I wanted to have a LED light on the top to simulate the police box light, so when cutting the outside casting box, I cut a congruent interior box (see number 4. pictures above.) This small inside box allows for an open area for the wiring from the LED through the top of the hole in the stone to the battery. The wiring consists of:
  • 1 ultra bright white 10 mm LED
  • 1 330 ohm resistor
  • 1 small switch
  • 1 battery connector and a 9V battery
  • A few lengths of wire

Prototyping the circuitprotyping the circuitprototyping the circuitprototyping the circuit

I dedicate this project to David Tennant for his the excellent portrayal of the 10th Doctor, which has just come to an end.

The 10th Doctor and His Tardis Image © BBC

March 4, 2010 10:19 PM

Licensing

by Noah Bedford

Everything I've posted here is hereby licensed CC-NC-SA, unless otherwise specified (or, y'know, if it's a derivative work.)

March 3, 2010 9:43 AM

Half drill bit!

by Noah Bedford

The Fuxamascanner is still in progress, so I did a quick (20 minutes) scan of a drill bit in Dr. Picza just for the lulz.

halfdrill-blender.stl

March 2, 2010 11:21 PM

F(l)uxamascanner

by Elliot Clapp

3d-printing_012.jpg

3d-printing_0116.jpg

3d-printing_019.jpg

3d-printing_0120.jpg

3d-printing_0124.jpg

3d-printing_0125.jpg

3d-printing_0126.jpg

3d-printing_0127.jpg

3d-printing_0123.jpg

3d-printing_0130.jpg

3d-printing_0129.jpg

About this Archive

This page is an archive of entries from March 2010 listed from newest to oldest.

February 2010 is the previous archive.

April 2010 is the next archive.

Find recent content on the main index or look in the archives to find all content.