Showing posts with label Cylon. Show all posts
Showing posts with label Cylon. Show all posts

Wednesday, January 02, 2013

The Proto Cylon

The Proto Cylon

By Bobby Neal Winters
I’ve been captured by another enthusiasm.  The Arduino controller card.  If you go to http://arduino.cc/en/, then you can learn as much as I know about it in short order.  There is probably a fancy name for it, and if you read the whole page on the link I just gave you, then you can probably find it.  Regardless of what you call it, it is basically a little computer that you can use to run stuff.  
It costs about $20.
I learned of its existence while looking around for Raspberry Pi. This turns out to be a slightly different kettle of fish, but I will doubtless return to Raspberry Pi eventually.  But I digress.
The Arduino collection of cards give you the ability to interact with the mechanical world. You can control a small amount of electrical current using the C programming language.  This appealed to the same part of my brain that was attracted to the Potato Cannon and the Itty Bitty Ubuntu Box.  
(Since it controls a small amount of current and the potato cannon needs a small amount of current to produce a spark, there is even the possibility of combining the two.  Using an Arduino card to make a potato machine gun. Hmmmm.)
In any case, one of the classical projects for a card such as this is to make a robotic car.  That is my long range goal.  But why stop with just a car?  Why not think really long range and work one’s way up to a Cylon. (I am thinking a Six or an Eight. The Threes aren’t stable.)   In the meantime, we do baby steps.  My first step is learning how to blink LEDs on breadboard. The code is below:

int inputPin=5;
int ledPin1=2;
int ledPin2=6;
int ledPin3=8;

void setup() {
 pinMode(ledPin1, OUTPUT);
 pinMode(ledPin2, OUTPUT);
 pinMode(ledPin3, OUTPUT);
 pinMode(inputPin, INPUT);
 digitalWrite(inputPin,HIGH);
}

void loop() {
 blinkOff(ledPin1, 0);
 blinkOff(ledPin2, 0);
 blinkOff(ledPin3, 0);
 blinkOn(ledPin1, 500);
 blinkOn(ledPin2, 500);
 blinkOn(ledPin3, 500);
 blinkOff(ledPin3, 500);
 blinkOff(ledPin1, 500);
 blinkOff(ledPin2, 500);   
}

void blinkOn( int ledNum, int duration)
{
 int switchOpen=digitalRead(inputPin);
 digitalWrite(ledNum, ! switchOpen);
 delay(duration);  
}
void blinkOff( int ledNum, int duration)
{
 int switchOpen=digitalRead(inputPin);
 digitalWrite(ledNum, switchOpen);
 delay(duration);  
}

This is what it looks like: