Sunday, January 13, 2013

Proto Cylon v1.0001

Proto Cylon v1.0001

By Bobby Neal Winters
I’ve been fiddling with my Arduino board a little more.  The Internet in general and YouTube in particular is rich with examples of projects using the Arduino board.  As with any student, my struggle has been to find the right level of video.  There are those which assume that you know everything about electronics and that you have certain things just lying around.  Then there are those which are very detailed and step-by-step, but don’t do much in creating a conceptual framework.  My hope is to work in a little of that conceptual framework.  It won’t be at the right level for anyone besides me, of course, but it will fit into the general milieu of the Internet as another piece of the puzzle.
The Arduino is able to take in information from the outside world in the form of electrical information.  It can process that information in form of binary numbers.  Then it can output information in such a way as to effect the outside world.
My Proto Cylon v1.0001 is an example of that.  In it I get input from a potentiometer, scale that input to a range from 0 to 255, and then output it in binary form using LEDs.
In this I use:
  • A 100 ohm potentiometer I got from Amazon.
  • An Arduino Starter Kit I also got from Amazon.
    • This included the Arduino Uno board;
    • Breadboard;
    • Jumper wires;
    • And a nice piece of plastic to mount the Arduino and the breadboard on.
    • A 9 volt battery connector.
  • I also got an assortment of leds and resistors from Amazon.
Before I dive into the project proper, let me remark on a few things that apparently everyone talking about this sort of thing believes everyone knows.  
First let me say that breadboard is the coolest stuff since, uh, sliced bread. You can hook together your components without soldering.  Those of you who have read of my adventures with the crystal radio know of the mental block I have regarding solder.  With breadboard, you just plug stuff in.  The breadboard I used here has power bars along the side with connections that run the length of the board and connections along the middle that run the width.  It has an adhesive backing that you can peel-off and stick to stuff.
The LEDs and resistors come together on purpose.  The LEDs run at a lower level of current than the Arduino board puts out.  The resistors are used to decrease that current.  If you don’t do this, the LEDs will get hot.  I learned that by not using the resistors and touching one.  Resistors come in various denominations. There is a way to figure out what size of resistor that you need to get a particular current.  I am not going to that depth at this point.  I will say that Ohms is the unit of resistance and those cute little stripes you see on the resistor tell you what that resistance is. In order to read them, you need to know the secret language of resistors and it can be found in Wikipedia.
In this project, we do our input from a 100 ohm potentiometer. The potentiometer is basically a knob you turn.  It has three prongs on the bottom: left, right, and middle. The left and the right prongs are where the power is hooked on.  The middle is where it is read out.  It is an entity unto itself and only interacts with the LEDs that we use for output via the Arduino.  The left prong will be hooked to 5 volts, the right will go to ground, and the middle pin will be taken to the A0 pin on the Arduino board. Once hooked to the board, the potentiometer will send a signal to the pin that is interpreted as a number between 0 and 1023. The function that retrieves this value is given below:
 val=analogRead(potPin);
For more detailed information about the syntax of this and the other functions used, look at the Arduino website reference.
Those of you who are attuned to the computer age might be suspicious of that particular range of values.  There are 1024 total values represented there. You might recognize 1024 as being 2 to the tenth power.  It requires 10 bits to represent this number. I discovered that wiring a board for LEDs requires a bit of patience and manual dexterity. I had enough patience to wire 8 LEDs but not enough to wire 10.  Wiring apparently has an accumulative effect on one’s nerves, and I’d run out of hard cider.
This means I needed to scale the value of the potentiometer reading to be in the appropriate range.  This is done via the function below:
 val=map(val, 0, 1023, 0, 255);
Once the value is read and mapped, we want to tear it to bits. (We all love our own puns; please indulge me.) We do this by mathematical functions in the C language.  The eight bits that we are going to use for our binary number from 0 to 255 are numbered from 0 to 7.  The first bit is labeled as 0 for 2 to the 0th power; the second as 1 for 2 to the 1st, and so on.  I write all of this so that I can say bitRead( x, i) with return the value of the ith bit in the number x.  For example for x=1001001 in binary, bitRead( x,0) returns 1 and bitRead(x,1) returns 0.  This is used only at one place in the program, but it is crucial.
I won’t impose the program on you until after the prose is done in interest of not boring you to actual tears. Let me put the lie to those words by now sharing a bit about my programming philosophy.  The program should be easy to read to see what it does.  This means not only should it be documented, but it should be written in functions so that at each level you can see what is done.  In programming the Arduino, after an initial setup, you go into a loop that is executed over and over and over. I put the things in the loop the will happen again and again: the value will be read from the potentiometer and the value will be output to the LEDs.
This is done with two functions.  The input function is fairly straightforward, and the output function isn’t too bad.  Their composition can be followed in the code at the end of this blog entry.
We now come to the wiring of the project.  A picture is indeed worth a thousand words, but a few words can help the picture.  Each LED is wired as follows: its pin on the Arduino goes to a resistor; the resistor goes to the long end of the LED; the short end of the LED goes to ground on one of the side bars of the breadboard.  By putting all of your ground to the side bar of the breadboard, you only need to run one ground wire to the Arduino.  You may see it in the picture below:
The code is below:
//Set the pin for the potentiometer
int potPin=0;

//Map the Arduino pins to bits of a number in the range from 0 to 255
int b0=3;
int b1=4;
int b2=5;
int b3=6;
int b4=7;
int b5=8;
int b6=9;
int b7=10;
//Initiate values for the analog inputs from the potentiometer
int val=0;
const int MAX_VAL=255;
void setup(){
 //Set the led pins for output
 pinMode(b0,OUTPUT);
 pinMode(b1,OUTPUT);
 pinMode(b2,OUTPUT);
 pinMode(b3,OUTPUT);
 pinMode(b4,OUTPUT);
 pinMode(b5,OUTPUT);
 pinMode(b6,OUTPUT);
 pinMode(b7,OUTPUT);  
}          

void loop(){
 //Grab the reading from the potentiometer
 val=grabValue(potPin);
 //light the number
 lightBinary(val);
}

int grabValue( int pPin){
 //Get the value from the pin
 int mVal;
 mVal=analogRead(pPin);
 //Map the reading to our allowed range of values
 mVal=map(mVal, 0, 1023, 0, MAX_VAL);  
 return mVal;
}

void lightBinary( int pN)
{
    //Loop digit by digit turing the led on or off as appropriate
    for(int j=0;j<8 j="j" span="span">
    {
     lightBit(j+3,bitRead(pN,j));

    }
}
void lightBit( int bL, int val)
{
 if(val==1){
    //Light the led if the bit is 1
    digitalWrite(bL ,HIGH);
    //leave the function
    return;
 }
 if(val==0){
    //turn off the led if the bit is 0
    digitalWrite(bL,LOW);
    //leave the function
    return;
 }
 //If you've made it here something is terribly wrong
 Serial.print("Error");
}

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:


Saturday, December 15, 2012

Rudolph at large



Rudolph at large

By Bobby Neal Winters
Those of you who follow this space may remember a report I relayed last year at this time regarding some difficulties Santa Claus had encountered during a promotional tour which took a rest stop along a deserted stretch of road between Jesse, Oklahoma and US Highway 377.  Eight shots were heard along that deserted stretch of road and venison jerky was being sold out of the trunk of a car at a basketball game in Stonewall.  There was also a report of a man wearing a red hat turning up in a Pentecostal Church with peppermint schnapps on his breath and his being taken off to jail.
Many of you have undoubtedly been of the opinion, since Christmas did come off last year and the presents from Santa were delivered on schedule, that I had made the whole account up.  While that might be an easy thing to believe in these days of rampant dishonesty, the truth is much more complicated.
It turns out that North Pole Headquarters is well prepared for situations such as this.  This is not the first time Santa has had to be sprung from jail, and there is a special squad of elves that have been trained for just such an occasion.  Usually, however, they just have to go to Vegas and spread enough money around.  The crew at the Pontotoc County Courthouse is made of much purer material however, and it took some community service for Santa this time.  If you saw an old man with a beard picking up trash on the side of the road, that might have been him. 
As for the reindeer, while their losses were substantial, they are of a military caste and took them as being a part of their duty.  New Dashers, Dancers, etc. succeeded into their hereditary positions as a matter of course. 
Duty is one thing, but, after a period of careful investigation, vengeance will be taken.  It will be quick, but it won’t necessarily be pretty.  You don’t mess with someone whose boss can get into your house at will.
You may also recall that, at the time the piece was written, Rudolph, the most famous reindeer of them all, had not yet been located, and that my old friend Bubba was searching for him.
If you are familiar with Bubba’s hunting skills, then you should be comfortably certain that, as long as Bubba is hunting for him on purpose, Rudolph is perfectly safe.  Any venison Bubba ever obtained—other than in exchange for cash from someone else’s trunk—has been a victim of his own front bumper.
“I hunted for him all last winter and into the spring,” Bubba said when I talked to him on the phone the other day.  “I never seen hide nor hair of him.”
“Maybe he flew home on his own,” I offered.
“I’d thought that myself,” he said, sounding serious, “but I heard some things that makes me think different.” 
Bubba always has some sort of theory or other to offer, so my better judgment told me to just let that pass, but I was unable to resist.
“What’s that?” I asked.
Continuing in his somber tone, he answered, “Some of my friends spend a lot of time in the woods hunting and fishing, and they’ve been seeing things they can’t explain.  One of them was out walking in the woods as saw some deer sign.”
“Well, that’s to be expected,” I said.  “It is deer season after all.”
“But this glowed in the dark,” he said.
“Glowed in the dark?” I asked.  “That’s pretty hard to believe.  Did you see it yourself?”
“No, but my friend used it to fertilize his tomatoes and when they were ripe, they looked just like red Christmas ornaments,” Bubba replied.  “He showed me one of them, and they were the prettiest little things.”
I didn’t believe him, but I didn’t feel like calling him a liar since he’d seen the Christmas ornaments and all.
“You said ‘things they can’t explain,’” I said.  “What else have they seen?”
“Well,” Bubba drawled, “a friend of mine was out deer hunting on Thanksgiving and thought he saw a red lightening bug one morning.  His eyes adjusted to the light saw a yearling deer where the lightening bug had been.  He blinked and when he opened his eyes the yearling was gone.  Then he heard rustling in the tree tops.”
“So,” I said, trying to sound as disinterested as possible, “what do you think is going on?”
“Well, you know how irresistible Oklahoma women are,” he said—and I wasn’t going to disagree with him, having married one myself.  (Some of my cousins have married several.)  “I think Rudolph has taken up with some of the local does.”
“You do?” I said this with the tone that may have started a fight if it hadn’t been muted by the phone.  Bubba either missed it or pretended too.
“Yep, I do, and you know what,” he continued unabated.  “I think it’s the best thing that’s happened around here in a long time.  Just think about how big a business deer hunting is.  What about hunting flying deer?  Think how festive a deer head with a glowing nose would look over the mantle in the holiday season.”
“I can’t imagine,” I said, and I tried not to.

Bubba and the North Pole



 Bubba and the North Pole

By Bobby Neal Winters
Many of you have been asking me about Bubba’s doings as of late, and, until recently, the answer was that Bubba had been oddly silent.  This had worried me somewhat.  As a parent, I’ve learned that when children are quiet they are often up to something and, while Bubba is far from being a child himself, he does have certain childlike qualities that endear him so to us.
This worry was exacerbated when, not having talked to him for an extended time, I called him.
“Hello, Bubba,” I said.  “I hadn’t heard from you in a long time so I figured I’d give you a call.”
“Hey there,” he began, but this was followed by him making the sound that someone makes with they are talking and lose their footing. This was followed by an expletive and Bubba talking to someone not on the phone, “Hey, you watch that! Are you trying to kill me?” 
“Are you okay?” I asked.
“Can I call you back?” he said.
“Sure,” I replied. 
He didn’t say goodbye, merely turning off his phone, but before he did, I heard him say “Now you get back down there!” in a way than indicated he meant it.
A couple of hours later he called me back.
“Are you all right?” I asked.
“I’m fine,” he said.
“So what’s been going on?  Why haven’t I been hearing from you?” I asked.
His answer was a tale that is unbelievable even by Bubba’s standards.  I will relate it now to you with the usual caveat that this is coming from Bubba.
It all began back in December of 2004 when Santa Claus made a routine landing on a stretch of country road between East Jesse, Oklahoma and US Highway 377.  As some of you may know, Santa Claus is originally from Stringtown, Oklahoma and stops along that stretch of road to tighten reindeer harnesses and fortify himself with peppermint schnapps on his way from Fort Smith to Ardmore.  On this particular occasion Santa’s routine was disturbed by some local youths who were out spotlighting deer.  At that time, all of the reindeer were killed and taken as meat with the exception of Rudolph who escaped.
After an incident with some Pentecostals and doing some community service work, Santa made his way back to the North Pole, but Rudolph, or more probably Rudolph’s offspring, were being sighted around the area during the Christmas season of 2005.  Bubba had spent some time hunting for them, but after a while—mysteriously—quit talking about it.
Three years later now Bubba made an admission to me.
“I found out how to capture them and have been holding them in a pen,” he said.
“Keeping them in a pen?” I asked incredulously. “How? Can’t they fly?”
“Fly?” he said. “You betcha they can fly.”  Bubba was a Big Sarah Palin supporter.
“I had to put a dome made out of chicken wire up over it,” he said.  “And I had to make a frame out of sucker-rods leftover from oilfield construction to support it.  I was up there working on it when you called.  One of the reindeer saw I was distracted and flew up and bumped me.  They are clever critters.  A while back, one of them got loose, flew up to around Kansas City, and got himself run over by a college professor in a Kia just south of Overland Park.  That’s when I decided I needed to reninforce my cover.”
“Wait a second,” I said, thinking I’d spotted a hole to poke in this nonsense.  “How do you know what happened to a deer south of Overland Park?  That’s a seven-hour trip from where you are.”
“Not by reindeer,” he said simply.  “I’ve been doing a lot of flying around lately.”
 “Where to?” I figured I’d let him spin his tale out and trap him in a contradiction.
“To the North Pole for one,” he said.  “The first time I did it, it was just for a joy ride, but I bumped into Santa Claus up there and we started to do some business.  He’s actually just a manager and a corporate symbol.  He farms out finding out who is naughty and nice to a security firm and then subcontracts delivery.  All he does for himself anymore is public appearances.  Since I’ve got my own herd of reindeer now, I am in the catbird seat as far as subcontracting delivery.  He even told me that I might be able to fill in for him at personal appearances if I kept my healthy appetite and grew a beard.”
This was getting to be a bit much.
“I am going to say goodbye to you now Bubba,” I said.
“But don’t you want to know about what the elves are really ...”
“Goodbye, Bubba.”
(Bobby Winters is Assistant Dean of the College of Arts and Sciences and Professor of Mathematics at Pittsburg State University.)

Concerning Santa



From December 2004

Concerning Santa

By Bobby Neal Winters
As many of you know, even from my place of exile in Kansas, I keep in touch with the goings-on in my Native State by talking to my brother on the phone.  This keeps me from putting on too many airs, and airs is about the worst thing you can have.
The other day I called him up, and after talking a while, I saw he didn’t seem his usual self.
“What’s the matter, Bubba?” I asked.  Even though his name is Jerry, I’ve taken to calling him “Bubba” since he started wearing that irritating goatee.
“You’ll think it’s silly,” he said.
“Ah, come on,” I urged. “What’s the matter?”
There was a pause on the other end of the phone, and I could hear the TV in the background, but then he spoke.
“I’m worried about Christmas,” he said, seeming dead serious.  I could understand seasonal blues because I get them myself.
“It’s coming,” I said.  “Not much we can do about that.”  I thought this would comfort him.
“But it might not,” came his voice, sounding as sad as a man whose wife had left him for his best friend and taken the family truck with all his fishing tackle in the back with her when she left.
“Don’t be ridiculous,” I said.  “December 25 is right around the corner.”
“It’s not the date that I’m worried about,” he said grimly. “It’s Santa Claus.”
He had my attention then, because Santa Claus is a fellow Okie.  He was born just south of Stringtown. He got into the Christmas business and had to leave the state, and now he’s got the kind of job that all little Okies dream of having when they grow up, working one night a year, and then running down to Alaska to hunt and fish the rest of the year while a bunch of elves work under the wife’s watchful eye.
“What about Santa Claus?” I asked.
“I’m afraid something bad might have happened to him,” he said. 
I was growing frustrated.  My brother has the bad habit sharing bad news iceberg-fashion.  He shows you a little, and then slams you with the rest when it’s too late.
“Spill it, Bubba,” I said.
“Well,” he drawled out. “I was over at the ball game the other night when one of my students asked me if I’d like to buy some deer jerky.  I said that I would and followed him out to his car where he opened the trunk and extracted a zip-lock bag of it from a brown paper sack.”
“So?” I asked. 
“He had a flashlight, and when he shined it in the trunk, I saw the brown paper sack was marked ‘Dancer.’”
“Is that it?” I asked.  I was growing just a little impatient because this was getting nowhere fast, but like I said, my brother does things at his own speed.
“Since ‘Dancer’ is the name of one of the reindeer,” he said, “it got me to thinking. Then when I gave him the money, he opened his car door, so he could put it in one of those bank bags with the zipper, and his dome light came on. When it did, I could see his steering wheel was wrapped in red felt.”
This was beginning to sound pretty sinister to me.
“What are you implying here?” I asked.
“Well,” he said, “after the jerky and the red felt, I started putting a few things together.  One of my students who lives on the road between East Jesse and US highway 377 had heard eight shots one night last week.  Then I’d heard they had to cancel one of Santa’s appearances down in the mall in Ardmore.”
Now, my brother had me concerned.  In that part of the world, it is common knowledge that when Santa makes personal appearances this time of year his route from Fort Smith to Ardmore takes him over the area my brother had described.
“What do you think happened?” I asked.
“Well,” he drawled out, “Santa sometimes likes to land on that road, check his deer’s harness, and take a swig of peppermint schnapps before going on to Ardmore, or so I’m told.  It could be he disturbed some boys who were out spotlighting deer.”
“What about Santa?” I asked, very worried.  “They didn’t kill him, did they?”
“Oh, no,” he said, “They wouldn’t’ve done that. Besides it explains something. The shots were heard on a Wednesday night, and that same Wednesday, a fat man that turned up in a Pentecostal church meeting in his underwear and a red stocking hat claiming to be Santa Claus.  The folks there were scared, called him ‘Satan Claws,’ and had the sheriff come and get him.  He’s still in jail being held as a vagrant.”
“Well, why don’t you just go and bail him out?” I asked.
My brother paused for a while, and I could hear Wheel of Fortune in the background.
“Hello, are you still there?” I asked.
“Yeah,” he said. “I thought about bailing him out, but then I remembered there were only eight shots.  What about Rudolph?  I didn’t see any red nose glowing in that car trunk.  That means Rudolph is still loose.  If I could catch him before I bailed Santa out that would give me some leverage with the old guy.  Maybe I could get on as his assistant or something.”
It was at that point I hung up the phone.  Time to go deer hunting.