Monday, November 19, 2012


Things are looking up.

I've got a rental offer on my rack of sennies and a short concert and some hours for the ballet (Nutcracker, of course -- what do you expect a ballet to be doing in December!)  Enough work to keep me busy until late Jan, although that isn't the same thing as enough pay to keep me fed.  And the first part of the year is usually a slow time in theaters.

So I still need to keep my eyes on other work/sources of income.

Before one of the checks I'd been waiting on came in, I was actually enjoying cleaning out some of the recesses of the pantry.  Some egg pasta that had been there for years, as well as a a lovely soup that came in the form of dried beans and herbs -- requiring overnight soak and a four-hour simmer and so on to cook.  Given time I might have gotten to the miso paste and udon noodles, which I seem to dig out about twice in a given year.

I was skipping lunch over the ten-hour work day, and walking to save gas (well, mostly to avoid having to find parking).  And I felt GREAT.

It's a bit of a paleo lifestyle.  We humans spent a long evolutionary span going for days between decent meals, and having to work hard to get that meal, too.  Well, evolutionary physiology is almost as much a quagmire of pop science and misconceptions and over-generalizations as evolutionary psychology, so don't try to take it too far!  All I know is that over a short term, I felt more alert and more fit than usual, and that is a good thing.  Enough that I almost missed having money and being able to buy food again.

The Morrow Project CBR is almost completed.  It is close enough I'm brushing off the sculpts for the Medkit and planning the casting process of that.  I think at this stage I'll just do simple two-piece silicone molds and slush-cast and glue it together (since I'm not trying to be crazy with internal electronics on that one).  And if the molds are any good, use them to experiment with thin-shell fiberglass (my latest reading suggests that the fiberglass eats even the almost indestructible silicone, meaning you get only a handful of pulls from each mold).

I spent most of my free time between performances writing a sub-routine that generates an incrementing random number (it creates n random digits and adds them to an existing stored 8-digit number).  I really need to study my C books more.  For some reason it was throwing up a ton of errors when I tried to pull a value from an array and add it to itself, so I was forced to copy the value to a variable and then stick it back in the array.  Which meant I couldn't do a nice loop/array sort of function for the overflow, but had to do it with a stack of nested if statements.

Any time you see more than three if statements in a stack or nest, especially if they are all referring to the same basic variables, you know you could simplify with a loop or boolean. 

But this all gets compiled anyhow, first via the Arduino IDE, then through avr-gcc, so a nest of if statements is not necessarily any worse at the hardware end.

So.  The software tasks to do:

1) Stack three or more of the "geiger click" subroutine to build an increasing threat (like the chem detector, which reads out a "parts per million" of the identified threat, and chirps the alarm (randomly) with an increasing frequency until it rolls over to full alert status.)

2) Split out the write_buffer part of the new incrementing random number generator so I can loop it with a static display.  The limitations of an 8-digit display; I can't just display "Accumulated RADS 456.34"  Instead I have to rotate through different screens.

3) Modify the rad alert siren.  The basic "timbre" is right (it isn't a wave generator, lacking in fact any analog capability.  What it is, is a mechanical speaker attempting to switch between two PWM frequencies at a fast third frequency, and creating all sorts of harmonics and noise in the process).  Anyhow, what it wants to do is stay on original pitch for an interval then fall rapidly.

4) With these parts, finalize the stages of the simulated radiation threat display.

5) Adjust the "injectable" light flash rate and make it linger into the reset with a flag for turning the selector to the TREAT position.  Right now it is using an arbitrary cut-off for whether the Universal Antidote will work on a given threat.  If I was really crazy I'd use a look-up table (or just organize the Threat table properly).  But then, the Threat table is a switch-case list -- I didn't go through the bother of creating a proper array for it.  And, yes, I did switch leads, to PWM a modern 20ma LED into looking like a vintage 2-5ma model.

6) Write the behavior for the "TREAT" position.  This includes a runtime-only counter (yes, the AVR is a modified Harvard architecture chip meaning a running program can actually write to the non-volatile "program" memory -- but I don't need to dig into that for a simple table prop.)

After that, it is pretty much soldering to the case components, glueing the speaker in, installing magnets to hold the lid on, and touching up the paint job.  I'd love to add a nameplate or stamp somewhere, but most of the ways of doing that would cost more money.  Well.....maybe could glue on a very thin sheet of metal and put a water-slide decal over that...

No comments:

Post a Comment