Light Probe – Base Unit Complete

The Light Probe Base

Finally got to the workshop! Built the base unit for the probe.  Nothing sexy, but very much functional. It’s a 10 cm round piece of 3/4″ birch furniture grade plywood. (Scraps from a past project). Below it are two strips of 1/2″ basswood cut to 8 cm and screwed on with countersunk 1″ wood screws.  Only took about 20 minutes start to finish.

The build went like this:

  1. Measured the servo, and plotted out where it needed to go on the board.
  2. Cut a circle using my table saw and a guide my circle jig.
  3. Routed out the hole for the servo with a Dremel.
  4. Cleaned up the hole with a tiny file.
  5. Carved out a groove for the cables with a round chisel and hammer
  6. Cut the two 8 cm basswood pieces
  7. Pre-drilled two 1/16″ holes for the wood screws.
  8. Counter sunk the holes deep enough so the screw heads are recessed.
  9. Placed in the servo.
  10. It’s snug enough that I don’t really need to use the screw mounts for what I’m doing.

Like I said, not sexy. But it’s very stable, does the job, and cost me nothing but time.  All said and done. I like it.

Version 2 might have the base plate carved into the Pyrrh1c logo…

I’m on Twitter. 

Light Probe – Small Adjustments

Spent a few hours addressing some odds and ends today. Got the “enter” key working from CLI entry textbox. It now actually runs the command when you hit enter, then clears the entry textbox. I also added a CLI command to display the LCD Address. SHOW-LCDADDRESS is working as expected.

I made the LCD settings variables. (address, total rows, total columns). This was done just as a best practice to facilitate easier use of different LCD’s later.

The functions in the Arduino code were moved around into a more logical sequence. Doesn’t affect code flow, but does affect readability.

Latest build here.
Latest source code is on GitHub.
I’m on Twitter. 

Light Probe – Time For A (Mega) Upgrade

So as this project has grown I’ve started to see memory warnings in the IDE. “Low memory available, stability problems may occur.”  Didn’t think too much about it until today when I kept running into weird issues where stable code just wouldn’t run correctly. For example, the printNextline()  would only print half the output of the line (WTF?) and the parseAndExecuteCommands(). After spending an embarrassingly long time picking through the code looking for the problem I decided to actually the shiny new Mega 2560 I bought the first time I saw the command and put that baby into production.

Learned the Mega is not a straight pin-for-pin match of the Uno.  Mega has a SDA/SDC pins (Sweet), and for whatever reason the LCD2004 has a difference address on the Mega than on the Uno. 0x37 and 0x3f respectively.  That said, after I got the conversion done it’s running smoothly again.

Latest build here.
Latest source code is on GitHub.
I’m on Twitter. 

Light Probe – Added an LCD Display

Still haven’t been able to get into the shop to build out the frame for the the arm yet.  However, that doesn’t mean I’ve been idle!

Latest Hardware Pic

Decided to take the opportunity to start adding the LCD display I wanted.  I grabbed a spare display I had lying around and get started. Found some good articles over on Robojax and got it set up.

I have it set up so that ever N’th time the arduino sends a serial line transmission of the current values it updates the LCD. This means the LCD isn’t as current as the serial monitor, but I found the refresh rate of the LCD was too slow to keep up.  I plan to add more functionality to fine tune this via the C# app and the CLI, but for this morning just getting it running was good enough for me.  I’d like to add “Enable-LcdUpdate”, “Disable-LcdUpdate”, and “Set-LcdInterval” commands. Possibly an option to choose what is displayed as well (servo’s vs sensors or something like that).

Latest build here.
Latest source code is on GitHub.
I’m on Twitter. 

Light Probe – Hello CLI Tab!

Short and sweet because it’s almost time to start work for the day…

Light Probe CLI

Got the CLI tab working. Ended up changing the results from a textbox to a listbox. Thinking I might later add the ability to double click an item in that window to execute it as a command…



Latest build here.
Latest source code is on GitHub.
I’m on Twitter. 

Light Probe – No Shortcuts

I’ve been too busy lately to really commit the time to go build out a proper frame for the light probe. Instead I’ve build a bunch of half-assed mock ups which all generally suck and failed to work.  I guess the moral of the story is that there is no shortcut here and I need to just go build the thing.

That said, I’ve decided to add a dedicated CLI tab to the application so I

The CLI Tab

don’t have to keep switching back to the Arduino IDE’s serial monitor. The next step is getting it wired up. This will require me to learn some new techniques as I don’t really know how to write a buffer type variable, or even if one exists that I could just make use of. While contemplating this I again found myself looking for a quicker easier way to do it, and again half-assed some things that didn’t work and were rolled back.  Again proving to me that there are no shortcuts. I think I might include that on the site motto going forward…

Latest build here.
Latest source code is on GitHub.
I’m on Twitter. 

Light Probe – Calibration, and UI tweaks

I’m travelling today so this will be a shorter update.

Finally got the calibration working so I can manually offset the photoresistor readings and servo positions. This was necessary because the components naturally have slight variations in their readings, etc. I will be creating semi-automated calibration sequence, but that will need the LCD screen up and running first.  I also tweaked the CLI functionality a bit to more easily integrate with the C# app.  Still outstanding is polishing it up so it can be used the a terminal emulator like Putty.

Next items on the agenda include:

  • Getting rid of the semi-colons from commands
  • Re-aligning the sensors from corners to sides (i.e. left and right instead of upper-left, upper right, etc.
  • enabling manual override of the automatic controls
    • Tying that to a Wii-Chuck (down the line a bit…)
  • LCD Status Screen
  • Bluetooth control module, to allow operation remotely, and without a PC/phone.

Having a blast building this thing, even if there is some serious scope creep happening. 😉

Latest build here.
Latest source code is on GitHub.
I’m on Twitter. 

Light Probe – Adding a CLI

So I took some time this weekend to add a CLI to the Arduino.  It follows the verb-noun syntax familiar to Powershell users (because I am one, and I love that syntax…)  It still interfaces with the C# GUI of course, but now I can interact with it from the Arduino IDE’s serial monitor as well. Ultimately I will enable Putty interaction with it.  I also did some refactoring to streamline the code a bit as I’m now up to over 70% of the Arduino’s available memory… May need to upgrade the Uno to a Mega. Fortunately I’ll be near a Micro Center in the near future. (W00t!)

Also got the servo’s governed down to between -45° and 45°. This was simple enough, but  I did get hung up on an idiot loop because the damn values kept going out of the range and getting hung. Took some thinking to get that to stop. Derp.

As always, the code has been updated on the Github Page.

I also have the Latest Build available for download as well, though not much has changed.