The VFD is now connected to the protoshield and a test program shows all of the number segments operational. Here's some pictures of the finished shield mounted to an Arduino.
Next is writing the driver and encapsulating it into an Arduino library. :)
Arduino VFD Hardware Interface Complete
VFD Circuit Diagram
I did some tests and discovered that the plates (segments in each display) will need to be driven by the full 12 volts while the grids can be supplied by the Arduino's typical 5 volt digital output. This requires me to use a transistor to drive each plate along with a resistor driving the base of each transistor. The circuit (minus the resistors driving the transistors) should look something like this.
It appears I will be using 11 (7 plates + 4 grids) to drive the VFD. This just squeezes into the IO ports available on my Arduino.
Next step will be to get the VFD attached to my protoshield, along with the transistors and resistors so that I can begin writing code... :) Can't wait...
Vacuum Fluorescent Display (continued)
I've continued to work with the display I referred to in my last entry. It may seem like a small step, but I carefully calculated what resistor I would need to properly power the VFD filament from a 12 volt power supply. I did indeed power the filament and saw in a dark room the soft glow of the orange heaters.
Next, I decided to power the actual grids and plates to see the display light it's blue display elements. Here is a picture of the display I am using. It's a Futaba 6-BT-65ZK (Part Number 4230782). I know very little about Futaba part numbers, but I did find that most followed this format. I was unable to find a reference sheet on this actual display.
I attached 12 volts to each grid and tested each plat to see which elements lit up. After documenting the display connections, I arrived at this pin out for my display. As you can see, there are not many elements and it's geared towards a clock radio in a car.
Letters A - G apply to the segments in the 7-segment display characters. For more information on which element corresponds with which letter, see this Wikipedia image.
Next, I will be trying to figure out how to drive the display using a multiplexer circuit in conjunction with an Arduino. I'll keep you posted on what I discover along the way. :)
Vacuum Fluorescent Display
Years ago, I saved a car radio from a Chrysler that had a digital display. I estimate 20 years later, I've finally taken time to tear it apart and scrounge parts from it. Inside I found a Vacuum Fluorescent Display (VFD). I didn't realize it was in there and found its glass package an immediate draw.
This is an example picture - my dis
play has less elements. :)
I wanted to do a little investigating about VFDs and found this website. Much to my surprise, there were a number of online examples of people using them to amplify audio signals since they have the basic structure of a Triode vacuum tube. Apart from the unique implementation of the device, I did find the theory information helpful at this site.
My plan is to use this display in conjunction with an Arduino. My first challenge was to figure out how to run the filament. I chose 12 volts as my available input voltage and have estimated that the required voltage is 2.5 volts. With that in mind, I needed to figure out exactly what resistor would be needed to provide that voltage.
Here are the only input parameters to my problem:
Input voltage: 12 VDC
Filament voltage: 2.5 VDC (this was determined through tests)
Filament current: 75 mA (this was determined through tests)
Here is what I want to figure out: Ohms of the resistor I need in series with the filament to achieve the 2.5 VDC across the filament. Here is a good source I used to figure out my series resistor values.
E = I * R
E = voltage (volts)
I = current (amps)
R = resistance (ohms)
We know that current is constant across the series circuit, so using this equation, we find that the resistance of the filament is .
3 = .075 * R
R = 40 ohms
Expanding our equation, we can say that:
E = I * (R1 + R2) where R2 is our filament resistance. Substituting what we know, our equation looks like this:
12 = .075 * (R1 + 40)
solving to: R1 = 120 ohms
Entertainment Cabinet
After getting a LCD TV, we realized our over-sized entertainment cabinet needed to be replaced with a smaller and more contemporary cabinet. We drew the cabinet on Sketchup first, then created the cabinet using a construction technique using lamination.
The sides, top and shelves are 1 1/4 thick and appear to be solid oak. They are actually laminated as follows:
1/4 inch plywood top
3/4 inch filler stock in a frame shape (pine)
1/4 inch plywood bottom
Adhesive backed edge banding (heat applied)
Here's the finished product.
Arduino LM35 Sensor
My son Paul and I recently finished a project using the Arduino Diecimila microcontroller in conjunction with the Processing open source programming environment to monitor temperature.
The project contains 3 parts:
1. The Arduino board with sensor circuit.
2. The Arduino program.
3. The Processing program.
The Arduino Board with Sensor Circuit
The Arduino circuit board is connected to the LM35 Celsius Temperature sensor. Here is a picture of the project circuit with illustrated wires connected to the temperature sensor.
We used the on board power source (5v and Gnd) to power the LM35 and analog pin 0 (zero) to read the analog output from the sensor. Here's a picture of the circuit wired on a breadboard.
The LM35 temperature sensor's pin-out and package information is as follows:
The Arduino Program
The open-source Arduino environment allows us to write code and load it onto the Arduino board's memory. The development environment is written in Java and based on Processing, avr-gcc, and other open source software.
The Arduino code loops every second to read output from the LM35, converting the analog output into Celsius and sending the data to the computer via a serial communication connection (USB).
Here's the code used to run the Arduino board:
//declare variables
float tempC;
int tempPin = 0;
void setup()
{
Serial.begin(9600); //opens serial port, sets data rate to 9600 bps
}
void loop()
{
tempC = analogRead(tempPin); //read the value from the sensor
tempC = (5.0 * tempC * 100.0)/1024.0; //convert the analog data to temperature
Serial.print((byte)tempC); //send the data to the computer
delay(1000); //wait one second before sending new data
}
The Processing ProgramThe software client portion of this project runs on a PC and is written in Processing. Processing is a language and development environment similar to Arduino and designed for creating visual effects programs. We used Processing to create a small client that can read the serial data from the Arduino board and display the temperature on a slider and in both Celsius and Fahrenheit. We also added a rolling 100 data point graph to display historical temperature data. Here's a screen shot of the Processing application:

Here is the code used for the visual portion of the project:
//import Serial communication library
import processing.serial.*;
//init variables
Serial commPort;
float tempC;
float tempF;
int yDist;
PFont font12;
PFont font24;
float[] tempHistory = new float[100];
void setup()
{
//setup fonts for use throughout the application
font12 = loadFont("Verdana-12.vlw");
font24 = loadFont("Verdana-24.vlw");
//set the size of the window
size(210, 200);
//init serial communication port
commPort = new Serial(this, "COM10", 9600);
//fill tempHistory with default temps
for(int index = 0; index<100; index++)
tempHistory[index] = 0;
}
void draw()
{
//get the temp from the serial port
while (commPort.available() > 0)
{
tempC = commPort.read();
//refresh the background to clear old data
background(123);
//draw the temp rectangle
colorMode(RGB, 160); //use color mode sized for fading
stroke (0);
rect (49,19,22,162);
//fade red and blue within the rectangle
for (int colorIndex = 0; colorIndex <= 160; colorIndex++)
{
stroke(160 - colorIndex, 0, colorIndex);
line(50, colorIndex + 20, 70, colorIndex + 20);
}
//draw graph
stroke(0);
fill(255,255,255);
rect(90,80,100,100);
for (int index = 0; index<100; index++)
{
if(index == 99)
tempHistory[index] = tempC;
else
tempHistory[index] = tempHistory[index + 1];
point(90 + index, 180 - tempHistory[index]);
}
//write reference values
fill(0,0,0);
textFont(font12);
textAlign(RIGHT);
text("212 F", 45, 25);
text("32 F", 45, 187);
//draw triangle pointer
yDist = int(160 - (160 * (tempC * 0.01)));
stroke(0);
triangle(75, yDist + 20, 85, yDist + 15, 85, yDist + 25);
//write the temp in C and F
fill(0,0,0);
textFont(font24);
textAlign(LEFT);
text(str(int(tempC)) + " C", 115, 37);
tempF = ((tempC*9)/5) + 32;
text(str(int(tempF)) + " F", 115, 65);
}
}
End.
Pummer

Here's some information on the pummer I built over Christmas break. I decided to take a few components and breadboard a flashing circuit. After looking on the Internet and trying some different things, I found a very low current 2 LED flashing transistor circuit. The circuit alternates the LEDs and gives a nice brisk attention grabbing look.
I also created a sensor circuit using an IR detector transistor and a switching transistor that disables the flashing circuit in the presence of light. Interestingly enough, florescent light bulbs (of which are common place in our home's lamps now) don't seem to emit enough IR to keep the flashing circuit disabled. So, evenings finding this pummer flashing away even with the lights are on in our home. Just a touch of sunlight seems to shut it off.
For power storage I've gone outside the bounds of true BEAMing by using two NiMH AAA batteries. These are charged by the 4.5 volt solar panel, so there is plenty of charging potential during the day. I use a diode to prevent leakage back through the solar panel which could prematurely discharge the batteries.
The mast is a single piece of 14 guage copper wire used as the common conductor for the two LEDs. The LEDs are soldered directly to the mast and are connected through a thin 2-conductor ribbon cable back to the circuit.
Here is a video demonstrating the flashing - sorry for the low light in the picture. Oh, yes, the spot lights in our kitchen are still the old fashion incandescent - so this demonstration worked well. :)