Archive for May, 2010

Big heads are, in fact, big.

Posted in giant on May 28, 2010 by raphaelabrams

These heads are big! It’s a little hard to tell, but Dave is inside a puppet head. We’re looking in through an unpopulated eye socket. The mesh on his head is made with that Protoplast stuff from a few posts ago. You can see some of the carbon fiber rods on which the eyelids swivel.

Advertisements

Shoes work again!

Posted in arduino, giant, Hot glue is the best thing in the universe. Deal with it., LED on May 27, 2010 by raphaelabrams

The giant baby shoes work again. They blink on each footstep.

Boards are in!

Posted in arduino, electronics on May 27, 2010 by raphaelabrams

We got our custom circuit boards! You’ll probably want to change them around for your own purposes but here and here are the EAGLE CAD files. What we have is essentially an Arduino with a whole mess of servo headers and a couple of analog filters. The servo headers have unregulated battery voltage and the rest of the circuit is on a 5V regulator. The filters are envelope followers with a buffer stage to feed the A/D inputs on the AVR.

Here it is with parts soldered in:

Japanese readers: Just be glad I’m practicing my calligraphy, OK?

Good Bends and Bad Bends

Posted in electronics, Hot glue is the best thing in the universe. Deal with it. on May 26, 2010 by raphaelabrams

Free-form or “dead bug” construction can be great in a pinch. It’s a little tricky to get it right, though. One thing to consider is proper bending. If you completely flatten the pins on a DIP package it will look nice and neat, but the bend will happen at a place that was bent before. It’s going to break. Look at the arrow, you can see a tiny bit of metal peeking out of the chip where a pin broke off.

Now if you only bend up to the shoulder of the pin you’ll be bending fresh metal. It won’t break as easily and is nice and springy.

Of course fragility and breaking are a major part of free-form circuits. There’s no way to make anything really strong with this technique, so if there’s time make real circuit boards.

Oh, and when you’re done cover it in hot glue.  Just go crazy. This actually does a pretty good job of keeping everything together, and is mostly waterproof too!

Humiliating Costume

Posted in giant on May 26, 2010 by raphaelabrams

I’m pretty sure that I’m up next when it comes time to test out one of the mascot costumes again. Dignity? Ha!

Birthday Cake!

Posted in cake on May 26, 2010 by raphaelabrams

Look at this binary cake! Just look at it! We ate it before we could decode it.  Thanks Meghann!

Autoblink

Posted in arduino, servos, Uncategorized on May 14, 2010 by raphaelabrams

The eyes now blink automatically. They will flit closed semi-randomly with minimum and maximum time spans between blinks. When the puppeteer wants to take over, they can be switched to manual mode.

How about some code!

unsigned long last_time = millis();
unsigned long time = millis();
unsigned long autoblinkdelay=1000;
unsigned int blinkingnow=0;
void loop(){

//do some other things in the loop here//

//now, the blinking stuff:

  time = millis();  //get the current time in milliseconds
  if ((time-autoblinkdelay)>last_time){
    blinkingnow=autoblink_duration;  //fill up the blinking timer, when it reaches zero the eye will open back up
    autoblinkdelay=random(autoblink_mintime,autoblink_maxtime);  //randomly select how long until the next blink
    last_time=time; //holder for comparing times in the next iteration of the loop
  }
  if(blinkingnow){  //is "blinkingnow" empty? if not, keep eye closed
    blinkingnow--;
    eyes_output=eyes_servo_closed;
    soft_servo(EYES_SERVO,eyes_servo_closed);
  }
  else{  //open the eye!
    eyes_output=eyes_servo_open;
    soft_servo(EYES_SERVO,eyes_servo_open);
  }
  delay(4); //delay to let the servo have time to get where it goes
}