it's a process

Jul 29

resawing a 1/4 sawn 6” x 10 fir for an upcoming project


Jul 28

Sculpture as Place.  Carl Andre at the Dia.


Jul 27
I keep putting pure tung + citrus solvent on this little bench I made, and it keeps gettin more n more prettier!

I keep putting pure tung + citrus solvent on this little bench I made, and it keeps gettin more n more prettier!


This is a load of walnut, some of which I just resawed for the aforementioned project.  It turns out to be fairly moist, not all that surprising in the midst of our NYC summer, where the relative humidity gets to around 70% in the shop if we’re not vigilant about the dehumidifying.  Its going to sit for a while until the moisture levels even out.


Some shelving in the works, for the kitchen. After living with this drawer divider for some time, I have realized how sturdy it is, and how over built a lot of solid wood work is.   So, I am going fairly thin with this piece, using 7/16” for the perimeter, 3/8” for the verticals, and 5/16” for the horizontals.  I will probably use sliding dovetails for the vertical / horizontal perimeter joints as they will be carrying the load, and regular ol’ dados for the horizontal shelf / vertical connections.  I am going to have to wait on this a bit though, because I just resawed all thew wood and it is real wet still.  Hoping it will retain some semblance of straightness.


Jul 24

Automated window shades in action.


Jul 22

Another intersection of woodworking and electronics, this is an ongoing automated window shade project I am working on.  I built the mechanism into the window casement itself.  The slit that the shades come out of is as small as possible while still maintaining mechanical reliability.  There are two shades per window, a sheer and a blackout.  The shades are on an automated schedule dictated by the sun, and are also manually controllable.  


To get the desired blink patter(s), the Switch Case seemed well suited for my needs.  Given n cases, I made the first case the ON state, the rest of the cases create the BURST interval, and I set the default to a random number between 0 and n.  This creates the blink pattern I was looking for, without the use of delay() (which has been a crutch for myself and other arduino n00bs)

here is an excerpt of the code:

//Modem mimicking blink pattern 

//Modified from Paul__B’s  Blink without “delay()” - multi!

const int led1Pin =  13;    // LED pin number

const int led2Pin =  12;

const int led3Pin =  11;

const int led4Pin =  4;

const int led5Pin =  9;

const int led6Pin =  8;

int led1State = 0;          // initialise the LED

long int led1time = 10UL;    // and an initial time

int led2State = LOW;

int led3State = LOW;

unsigned long count1 = 0;   // will store last time LED was updated

unsigned long count2 = 0;

unsigned long count3 = 0;

// Have we completed the specified interval since last confirmed event?

// “marker” chooses which counter to check 

boolean timeout(unsigned long *marker, unsigned long interval) {

  if (millis() - *marker >= interval) { 

    *marker += interval;    // move on ready for next interval

    return true;       

  } 

  else return false;

}

void setup() {

  pinMode(led1Pin, OUTPUT);      

  pinMode(led2Pin, OUTPUT);      

  pinMode(led3Pin, OUTPUT); 

  pinMode(led4Pin, OUTPUT);

  pinMode(led5Pin, OUTPUT);

  pinMode(led6Pin, OUTPUT);  

  led1State =   0;        // initialise the LED

  led1time = 1UL;         // and an initial time

  digitalWrite(4,HIGH);   //turn on LED’s 4, 5, & 6

  digitalWrite(8,HIGH);

  digitalWrite(9,HIGH);

}

void loop() {

  // Act if the latter time (ms) has now passed on this particular counter,

  if (timeout(&count1, led1time )) {

    switch (led1State) {

    case 0: 

      {                              // begin the sequence

        led1State = 1;               // next step

        led1time = 700UL;            // for x time

        digitalWrite(led1Pin, HIGH); // switch it on

        break; 

      }

    case 1: 

      {

        led1State = 2;               // next step

        led1time = 40UL;           // for however

        digitalWrite(led1Pin, LOW);  // switch it off

        break; 

      }

    case 2: 

      {

        led1State = 3;

        led1time = 30UL;

        digitalWrite(led1Pin, HIGH); // switch it on

        break; 

      }

    case 3: 

      {

        led1State = 4;

        led1time = 20UL;

        digitalWrite(led1Pin, LOW);  // switch it off

        break; 

      }

    case 4: 

      {

        led1State = 5;

        led1time = 30UL;

        digitalWrite(led1Pin, HIGH);  // switch it on

        break; 

      }

    case 5: 

      {

        led1State = 6;

        led1time = 35UL;

        digitalWrite(led1Pin, LOW);  // switch it off

        break; 

      }

    default: 

      led1State = 0 + random (0,8);    // reset to random case

    }

  } 

//led2 blink interval

  if (timeout(&count2, 77UL )) {

    if (led2State == LOW) {

      led2State = HIGH;

    }

    else {

      led2State = LOW; 

    } 

    digitalWrite(led2Pin, led2State);

  } 

//led3 blink interval

  if (timeout(&count3, 300UL )) {

    if (led3State == LOW) {

      led3State = HIGH;

    }

    else {

      led3State = LOW; 

    } 

    digitalWrite(led3Pin, led3State);

  } 

}


Jul 21

This LED project is a favor for a friend’s art piece, and a way for me to get into the word of ardiuino.


I am trying to mimic the specific blinking patterns of a particular modem. This involves one LED blinking at two alternating rates, which rates are switched somewhat randomly and which themselves each contain a degree of randomness. I currently cannot figure out how to do this without the delay() function. I can’t use the delay function because i need to do other things with the arduino as well.  I know this isn’t the way to do it, but its what I got for now.

I am using two while loops:

while(var < random (10, 20)){
    digitalWrite(ledPin2, HIGH);   // sets the LED on
    delay(randOn1);                // waits for a random time while ON
    digitalWrite(ledPin2, LOW);    // sets the LED off
    delay(randOff1);               // waits for a random time while OFF
  var++;
}

while(var2 < random (0,4)){
    digitalWrite(ledPin2, HIGH);   // sets the LED on
    delay(randOn2);                // waits for a random time while ON
    digitalWrite(ledPin2, LOW);    // sets the LED off
    delay(randOff2);               // waits for a random time while OFF
  var2++;
}


Page 1 of 42