Saturday eveing – the day flu by

Grrrrr. myspace just ate my blog again.. so I’ll have to trype.. Not in the mood for it at all…

Well folks.. I’m not 100% sure, but I think I have the flu.. I mean THE flu . It’s been going through our area for the last week. They actually closed the schools in a neighboring town because of it. There asking folks not to come in to the doctor to be checked because it only aids the spread.  I’m not completely sure.. but now I think I have all the symptoms. I woke last night with a high fever, chills aches and cough.. and that’s kept up mostly though the day. That said.. I don’t feel any worse than any other flu I’ve had.I’ve heard that the strain we have up here is not so bad. I’ve even heard a few folks say that it’s better to get it now than when it comes back tr. Evidently there’s a prediction that it will come back with a vengeance this winter.

All in all.. I’m feeling only sort of lousy during the day.. We had a bunch of stuff planned for the day.. but I just hung out on the couch for most of the day. Diane took gabe to middlebury for a post season lacrosse tournement.. it’s tomorrow too.. hope I feel up to going.. I also missed hannah b’s graduation party and David K’s barbeque..   It’s ok though.. I don’t feel like moving or talking right now..

I did make pretty good use of the downtime, though. I wrote a ‘how to’ guide for making the kind of Rainbow headbands that I wear to my shows for Instructables.com. Instructables is an awesome website run by a guy I know (Eric W) that is helpign spread the DIY ethos.  I decided to put in the hatband because their currently having a contest for the best LED project. Mine won’t likely win, but it’s fun to try…  

The cool thing is that the prize is a set of lights made by Xander H. the guy who I told you about a few days back who I helped create  the arduino code to drive the light strips 
I also finally got around to posting a video of the ‘get more kids interested in engineering‘ talk that I did back on my birthday. I’ve been watching it. It’s weird to watch yourself talk 
Yikes.. I’m feeling pretty yucky.. I’ve got to crawl back into bed.. Talk to ya’ll tomorrow.. Gnite folks. Gnite Sam
-me

Thrusday night – open source / open sores

Got home so late last night after that long but productive trip to NY.. I paid for it today.. I am home with a virus of some sort.. I’m fevery and achy… and I have open sores on my tongue… yuck !  ..
   It dodn’t slow me down though. I had a very productive day just working from home. I’m spending lots of time on the phone talking to new folks abotu soem ideas I have.. it’s fun meeting these new folks. Speaking of new folks and open sores…  A chance meeting aI had at makerfaire has turned out to be pretty productive. I was wearign the  LED color changing halo that I often wear at events… I ran into a guy , Xander H. at one of the booths who recognized the chips that I was using in my halo.. and asked me how I’d figured them out. . Readers of this blog may recall that I struggled mightely to figure out the inner workigns of those chips back before christmas as I was maign headbands for both boys.    Anyway.. Xander had been struggling with the same horrible chineese documentation that I’d had to work through.. We exchenged busness cards.. then email.. and finally source doe.. and the result is a cool new opensource librbary Xander wrote for driving these strips. I love that this chance meeting at th Faire led to a contribution to geek culture..   It really is world 2.0

.r{}* LEDStrip – Arduino driver for HL1606-based LED strips

 * Thanks to: John M Cohn
 * Copyright (c) 2009, Synoptic Labs
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *   * Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *   * Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *   * Neither the name of the .. nor the
 *     names of its contributors may be used to endorse or promote products
 *     derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY SYNOPTIC LABS ”AS IS” AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL SYNOPTIC LABS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include “WConstants.h”
#include “LEDStrip.h”
LEDStrip::LEDStrip(int dPin, int sPin, int latchPin, int clkPin)
{
  _dPin = dPin;
  _sPin = sPin;
  _latchPin = latchPin;
  _clkPin = clkPin;
  _faderEnabled = 0;
 
  digitalWrite(_dPin, LOW);
  pinMode(_dPin, OUTPUT);
  digitalWrite(_sPin, LOW);
  pinMode(_sPin, OUTPUT);
  digitalWrite(_latchPin, LOW);
  pinMode(_latchPin, OUTPUT);
  digitalWrite(_clkPin, LOW);
  pinMode(_clkPin, OUTPUT);
}
void LEDStrip::faderCrank()
{
  unsigned long mymillis;
 
  if (!_faderEnabled) return;
  mymillis = millis();
  // Give us 250ms slop in case we don’t exactly catch our edge.
  if (mymillis >= _faderPulseNextEdge && mymillis < _faderPulseNextEdge + 250) {
    if (digitalRead(_sPin) == HIGH) {
      digitalWrite(_sPin, LOW);
    } else {
      // only load new value of _faderPulseHalfWidth on rising edge
      digitalWrite(_sPin, HIGH);
      _faderPulseHalfWidth = _faderPulseNewHalfWidth;
    }
    _faderPulseNextEdge = mymillis + _faderPulseHalfWidth;
  }
}
unsigned int LEDStrip::faderSpeedGet()
{
  return _faderPulseHalfWidth;
}
void LEDStrip::faderSpeedSet(unsigned int halfWidthms)
{
  if (halfWidthms == 0) {
    _faderEnabled = 0;
    _faderPulseHalfWidth = 0;
    _faderPulseNewHalfWidth = 0;
    digitalWrite(_sPin, LOW);
    return;  
  }
  _faderPulseNewHalfWidth = halfWidthms;
 
  // if we’re already running, don’t re-init _faderPulseNextEdge
  if (_faderEnabled != 1) {  // starting from non-running state,
    _faderEnabled = 1;
    digitalWrite(_sPin, HIGH);
    _faderPulseHalfWidth = halfWidthms;
    _faderPulseNextEdge = millis() + _faderPulseHalfWidth;
  }
}
.r{}* word consisting of 8 bits.  Command word is clocked out MSB first (i.e. D8
 * is first bit sent)
 *
 * Format of command word (using conventions in datasheet):
 *   ________________________________________________________________________
 *  |   D1   |   D2   |   D3   |   D4   |   D5   |   D6   |   D7   |    D8   |
 *   ————————————————————————
 *   ________________________________________________________________________
 *  |     LED1 CMD    |    LED2 CMD     |    LED3 CMD     |   2X   | LatchOK |
 *   ————————————————————————
 *
 *   LED{1,2,3} CMD –
 *       00 – LED off
 *       01 – LED on (max bright)
 *       10 – LED fade up   (start at min bright)
 *       11 – LED fade down (start at max bright)
 *
 *   2X – Double fade speed
 *       0 – 1X fade speed, each pulse on SI line steps brightness by 1/128th.
 *       1 – 2X fade speed, each pulse on SI line steps brightness by 1/64th.    
 *
 *   LatchOK – Enable latch.  Set to 0 to insert ‘white space’ in the serial
 *             chain.  If set to 0, the entire CMD is ignored.
 *       0 – Do not latch this CMD when Latch is thrown.
 *       1 – Latch CMD as normal when Latch is thrown.
 *
*/
// Push a color value down the strip, setting the latch-enable flag.
void LEDStrip::rgbPush(uint8_t redcmd, uint8_t greencmd, uint8_t bluecmd)
{
  uint8_t cmd = 0;
  uint8_t flags = LATCH;
  if (redcmd >= NONCMD || bluecmd >= NONCMD || greencmd >= NONCMD) return;
  cmd |= (greencmd << 4) & (_BV(5) | _BV(4));
  cmd |= (redcmd << 2) & (_BV(3) | _BV(2));
  cmd |= (bluecmd) & (_BV(1) | _BV(0));
  cmd |= flags & (_BV(6) | _BV(7));
  pushCmd(cmd);
}
void LEDStrip::rgbPush2X(uint8_t redcmd, uint8_t greencmd, uint8_t bluecmd)
{
  uint8_t cmd = 0;
  uint8_t flags = LATCH | SPEED2X;
  if (redcmd >= NONCMD || bluecmd >= NONCMD || greencmd >= NONCMD) return;
  cmd |= (greencmd << 4) & (_BV(5) | _BV(4));
  cmd |= (redcmd << 2) & (_BV(3) | _BV(2));
  cmd |= (bluecmd) & (_BV(1) | _BV(0));
  cmd |= flags & (_BV(6) | _BV(7));
  pushCmd(cmd);
}
void LEDStrip::sPulse()
{
  if (digitalRead(_sPin) == HIGH) {
    //delay(1);
    digitalWrite(_sPin, LOW);
    delayMicroseconds(1000);
    digitalWrite(_sPin, HIGH);
    delayMicroseconds(1000);
  } else {
    //delay(1);
    digitalWrite(_sPin, HIGH);
    delayMicroseconds(1000);
    digitalWrite(_sPin, LOW);
    delayMicroseconds(1000);
  }
}
// Push a blank value down the strip, not setting latch-enable flag.  
// Does not affect the status of a particular LED when latched.  It’s
// like using whitespace.
void LEDStrip::blankPush()
{
  pushCmd(0);
}
void LEDStrip::pushCmd(uint8_t cmd)
{
  shiftOut(_dPin, _clkPin, MSBFIRST, cmd);
}
void LEDStrip::latch()
{
  digitalWrite(_latchPin, HIGH);
  delayMicroseconds(1);  // spec sheet specifies minimum latch pulse of 1us
  digitalWrite(_latchPin, LOW);
}

OK… I still feel yucky. Early to bed for me.. nte folks.. Nite Sam
-me

ps. I just got an IM from my freind carl. He’s on a boat in the middle of the baltic ocean.. 1AM and still sunny there… technology is wonderful

wednesday night – just home

It’s 1:53am .. I just got home from a day long drive down to Hawthorne NY. I left here at 3:30 this morning .. It’s been a long, long day. I’ve got some sort of virus.. I feel yucky.. but all in all it was a good day. Max, Jessie Mason and Tessa drove up 30 seconds after I got here. Their evening is just beginning. I’m Glad to be home. Now off to sleep. Nite all. Nite Sam
-me

Monday midday – pictures from yesterday

Ahhh.. I have momentary bandwidth.. here are the pictures from yesterday… Here are some pictures from Gabe’s MMU Cougars Lacrosse game yesterday.. they won the championship !!!!!  I love watching Gout on the field.. note he was the only one sporting purple horns and a mustache !

I left vermont about 4:30 headed for boston… got to my folks about 4:30. We had a great dinner. My dad made his signature batchelors spaggetti .. and my mom made her prized apple tart. You can’t get more loved than that !


It was a great visit. I’m now on a break at a meeting in Boston.. Gotta pay attention now. More later.. TTYL folks… bye Sam
-me