Updates from December, 2008 Toggle Comment Threads | Keyboard Shortcuts

  • Yury Gitman 1:16 am on December 24, 2008 Permalink | Reply  

    Antisocial toy 

    After solving the movement issue of servo, I started thinking about how to put all these electronic parts into my plush toy. First, I moved one of power supplies to mini breadboard and attached it on the Arduino board. Here I simply used both hot glue and tape.




    Toys were having fun to hang out together!
    Matt’s toy (with accessories made by Hsiang Ju and me) + Hsiang Ju’s duck


    The box made of cardboard was used to protect the circuit and provide a platform for servo to stand. Two batteries would be legs of the toy.



    Everyone was working hard =)





    I started sewing the skin of my toy. It’s a lot of work, trust me.


    My toy’s head.


    I got a plastic clown nose from Halloween Adventure, ha ha, and I used it as the head part, just the perfect size. Servo’s fan was attached on the plastic ball by hot glue, and the same, connected the plastic ball and the fur head skin. So toy’s head would turn to specific angles that I set when motor was triggered.





    However, I made a mistake here. Without making sure where eyes would be, I hot glued the head skin with the plastic red ball. When I wanted to sew the IR sensor on its head, I found it’s hard to separate the fabric from the ball. Since I couldn’t mount the IR sensor at the right place, toy’s eyes were much lower than I originally expected. 



    Putting on its skin continuously.





    Final review document







    the testing video is on the way.
    to be continued…

  • Yury Gitman 11:55 pm on December 23, 2008 Permalink | Reply  

    Hello, How May I Help You? 


    Do you often have guests over and wonder what they’re doing when you’re not looking?  Perhaps, they’re getting too comfortable and have stopped asking before they open your drawers in the kitchen, bathroom, bedroom, etc. to get what they need? 

    Hello, How May I Help You? is an adorable and friendly solution for such people like you.  Simply place the doll into a drawer of your choice, and turn on the switch before guests arrive.  If they snoop into your drawer, the doll will "greet" them with a message when it opens.

    How May I Help You? (Final Form) from Fuki on Vimeo.

    (More …)

  • Yury Gitman 5:12 pm on December 16, 2008 Permalink | Reply  

    Compy: A peek inside 

    Finally, Compy is up and working! Here are some photos of his guts, and his code is below!

    Compy’s front
    I added googly eyes and a pipe cleaner bow-tie to give him a little craft charm.

    Compy’s Back
    His battery pack is attached on the back.

    Compy with his Battery Pack removed
    The battery pack is attached with velcro. The chip clip which holds Compy onto a laptop is hot glued.

    Compy’s Guts
    I used an Arduino Mini, and had to put that in a little acrylic box from the Container Store separate from another acrylic box containing the speaker and the IR sensor.
    Code is below!

    (More …)

  • Yury Gitman 5:02 pm on December 16, 2008 Permalink | Reply  

    PING. What will it say about you? 


    PING is a smart trash/recycling bin that tracks your trash activity and reports it online. His aim is to help you develop better recycling habits by collaborating with others.


    PING is part of a larger concept that asks the question: "If objects had a voice, what would they say about us and how would we respond?"  PING’s ‘voice’ is able to tell users about their trash habits and connects them with other PING users online to allow opportunity for collaboration toward a more sustainable world. PING does this by tracking each time you throw an item in either its waste or recycling compartment and reports this activity online as well as communicating directly with the users through its own illuminating lights. Future iterations of PING will also include a way for the bin to measure weight of the trash, how often the bin gets filled up, and will be able to remind users of trash day so they’ll remember to put the trash out. All this data collected will connect to much larger ideas online. For instance, knowing how much paper people recycle can help us calculate how many trees each individual is saving, etc. – allowing each person to feel a bit of accountability and reward for their recycling efforts and help them know that they do in fact play an important part. View a demo video:

    PING. What will it say about you? from Katrina Bekessy on Vimeo.

    PING was created with Arduino and Processing. Source code can be found here:
    Download PING_ArduinoCode
    Download PING_uploadDataToSite

    PING was created by Katrina Bekessy.
    Katrina would love to hear any thoughts/opinions/feedback you might have about this project. If you’d like to learn more about it or share your thoughts, please contact Katrina at kmbekessy[at]gmail[dotcom].

    • blackout 10:03 pm on September 1, 2010 Permalink | Reply

      Useeeeeeeeeellllllesss !

  • Yury Gitman 7:52 pm on December 7, 2008 Permalink | Reply  

    Lets get it on Lamp. (bringin the heat…all night long!) 

    So I got the code and circuitry to all work correctly for my "Let’s Get It On" Lamp.  I am so excited to get it working on the reals.

    Yet, i’m still havin some issues with the pants circuitry.  Sometimes the fly signal works, others it doesn’t.

    *Side note: there pants have enough batteries in them to melt through the crotch.  This concerns me a bit and it could probably be wired in a more optimal way, with less batteries, but I need a break from this.  FYI: Not for actual wearing!

    Here’s some vid and pics of my progress. 🙂

    lamp_circuit from Lynn WasHere on Vimeo.

    * BlinkColorFader — Example of how to select color & brightness
    *                    with two pots
    * For more info on how to use pots and analog inputs see:
    * BlinkM connections to Arduino
    * PWR – — gnd — black — Gnd
    * PWR + — +5V — red   — 5V
    * I2C d — SDA — green — Analog In 4
    * I2C c — SCK — blue  — Analog In 5
    * Note: This sketch sends to the I2C "broadcast" address of 0,
    *       so all BlinkMs on the I2C bus will respond.

    #include "Wire.h"
    #include "BlinkM_funcs.h"

    //address for BlinkM
    #define blinkm_addr 0x00

    // INPUT: Potentiometer should be connected to 5V and GND
    int potPin = 0; // Potentiometer output connected to analog pin 0
    #define potPin 0          // analog in pins from zipper signal to control LED fade color: white to red
    #define ARRAY_SIZE 5     //this is the array size
    int potNums[ARRAY_SIZE];  //this reads AND stores 10 numbers from the potentiometer input.
    int pot_val;              //potentiometer value from zipper position on jeans

    // OUTPUT: Use digital pins 9-11, the Pulse-width Modulation (PWM) pins
    // LED’s cathodes should be connected to digital GND
    int pPin = 7;    //PLAY, conncected to pin8

    // Program variables
    int currentPlace = 0;                    //this is the total value
    int placeHolder = 0;                     //placehoder for each spot in the array
    int ave = 0;                             //average pot input numbers (normalize/smooth the input signal)

    void setup()
      BlinkM_stopScript(blinkm_addr);  // turn off startup script
      Serial.begin(9600);              // …set up the serial ouput in 0004 format

      for (int i = 0; ARRAY_SIZE < 5; i++)
        potNums[i] = 0;                       //fills all values in the array to 0
      pinMode(pPin, OUTPUT);

    // MAIN
    void loop()
      currentPlace -= potNums[placeHolder];       //subtract the last reading from array
      potNums[placeHolder] = analogRead(potPin);  // read the potentiometer value at the input pin
      currentPlace += potNums[placeHolder];       //add to the array
      placeHolder++;                              //add 1 to the placeHolder each loop

      if(placeHolder >= ARRAY_SIZE)
        placeHolder = 0;                         //if the placeHolder goes thru the whole array,
      }                                          //then loop back to the 1st spot in the array

      ave = currentPlace/ARRAY_SIZE;             //calc the average
      //Serial.println(ave);                     // send it to the computer (as ASCII digits)

      pot_val = analogRead(potPin);              // read the hue pot

    //——————————————-LED LIGHT——————————————

        //light should fade from white when zipper is up to red when zipper is down                                                          
      BlinkM_fadeToRGB( blinkm_addr, 255, int(pot_val/3.5), int(pot_val/3.5));  // adjust the green and blue to decrease with pot values


      if (ave > 600)                    // Upper third of potentiometer"s range (600)
        digitalWrite(pPin, HIGH);       //keep digital pin open if zipper is near top


      else if (ave >= 200 && ave <= 500) // Middle third of potentiometer’s range (100 – 150)
        digitalWrite(pPin, HIGH);      //keep digital pin open if zipper is in middle

      else if (ave < 100)  // Lowest third of the potentiometer’s range (50 – 100)/turn on music here (< 100)
        digitalWrite(pPin, LOW);      //put digital pin to GROUND if zipper is at bottom



      delay(50);  // wait a bit because we don’t need to go fast

  • Yury Gitman 1:00 am on December 3, 2008 Permalink | Reply  

    12 Quack! 

    After a long fight with win bound chip and arduino and bubbles…, I finally heard it quack!

    Quack! from Hsiang Ju Hung on Vimeo.

    Here’s the code:
    // Input settings
    int analogPin = 3;   // ir sensor connected to analog pin 3
    int val = 0;         // variable to store the read value

    // Digital pin settings
    int aOut = 9;   // Play pin connected to digital pin 9

    // Variables
    int aVal = 0;   // Variables to store the input from the ir sensor

    int DEBUG = 1; // Set to 1 to turn on debugging output

    int average[100]; // Averaging Code setting
    byte counter = 0;

    void setup()
      pinMode(aOut, OUTPUT);   // sets the pin as output

      if (DEBUG) {

        Serial.begin(9600);     // Open serial communication for reporting

    //Main program
    void loop(){
      val = analogRead(analogPin);

      //Averaging Code start
      average[counter] =  val;
      byte c;
      int total = 0;
      for(c = 0;c<100;c++){
        total += average[c];
      int averaged = total / 100;
      counter = (counter + 1) % 100; //Averaging Code. modified from Dave Millis example

      if(val < 300){       
        analogWrite(aOut, 0);
        analogWrite(aOut, 255);
        analogWrite(aOut, 255);
        if (DEBUG) {      // if we want to read the output
        if(DEBUG>100){  //print every hunderd loops
          DEBUG = 1;    // reset the counter

    And here is the new win bound recorder which is smaller, more solid, and works as well as the old one. It sounds actually better because  I got a bigger speaker for it.

  • Yury Gitman 5:24 pm on December 2, 2008 Permalink | Reply  

    Birdie/Qwail work in progress… 

    I’ve scrapped the Winbond, which is both good and bad. The Winbond would have been great for making bird sounds, but the Arduino Mini is so much more compact and easy to work with. It makes sound too, but the computery noises it makes are not very bird-like. In fact, they’re just downright annoying.

    I’m using the Play Melody code from an Arduino tutorial to get started. I had to add a couple of extra octaves (by halving the frequency of each tone for each octave), and now I’m working on getting the melody to play at the appropriate time.

    Right now my code will play a little ditty after 15 seconds if someone is not in front of the IR sensor. I need more parameters, but it’s not bad for a proof of concept. Consider is an implementation prototype.

    My code is after the jump, by the way

    Some photos:

    The Whole Mess


    Here is my arudino mini, hooked up to the arduino as a usb connector. Also featured within the mess of wires is an IR sensor, a speaker (bigger than the one I’ll end up using, actually), and some fine LEDS to help me figure out what’s going on when). The Red LED comes on when the IR is on and reading something is close, and Yellow LED comes on when the IR is reading that nothing is in front of it anymore.

    A Close Up


    This is just a close up shot of the Arduino Mini, connected to things. I’ll be taking it off of the bread board as soon as I’m happy with my code. Until then, it stays, which unfortunately is holding me back from making Birdie look and feel prototypes.

    A video is coming soon!!

    (More …)

  • Yury Gitman 1:31 pm on December 2, 2008 Permalink | Reply  

    Catertainer Circuit + Code 

    The code finally works!

    The Catertainer has 10 taunts, and every minute, if it isn’t played with, it will say one of the taunts.

    Here is an example of one of the taunts.

    Catertainer Circuit from Mouse & the Billionaire on Vimeo.

    I finally got the Wee from Sparkfun, so I’ll be transferring the whole circuit to the new (much smaller) circuit, soon.


    (More …)

  • Yury Gitman 9:23 am on December 2, 2008 Permalink | Reply  


    The Wee I ordered from Sparkfun just came in, and it is ridiculously small.

    I just had to take a picture of it for y’all


    Careful you don’t eat it!

  • Yury Gitman 1:38 am on December 2, 2008 Permalink | Reply  

    Making some progress??? 

    So here’s what I’ve got going so far…it doesn’t look like much right now, but it will make a huge difference once I actually have it all set up in the real trash bin I intend to use. Right now I’m just trying to get everything to work.

    I’ve go the IR sensors detecting which bin (recycling or waste) was used, and the Winbond chip changes tracks and plays back the appropriate sound depending which side was just used. I’m having a bit of a problem with the Windbond chip, though. When it needs to change tracks it won’t play back the sound after it has moved forward. It’ll only play the sound the next time that side of the bin is used. I can’t figure out how to fix it in my code, but I don’t think it’s a huge problem…just strange. My code is posted at the end of this blog post.

    I also have the Arduino counting how many times each side has been used. A green or yellow LED will light up when one side is used more than the other (green = you’ve recycled more, yellow = you’ve wasted more).

    Alos, I assembled my XBee transceivers. It took FOREVER to solder everything – I even got injured in the process (one of the pins got shoved under my fingernail…awesome.). I haven’t set them up to work yet…but that’s going to happen in the next day or two. For now, all data from the bin can be seen through the serial reader in Arduino. I’ve posted a screenshot of it below.

    Lastly, I started playing with some big FSR’s to use as a rough scale/weight measurement for now. Next task for me is to figure how I’m going to normalize their numbers in my code…I have no clue how I’m going to do that…

    Here’s some pics:


    The inside of my ‘bin’…not pretty, but semi-functional at least!




    Had to show off my awesome soldering job…male and female header pins all in a row, just so I can mount a silly XBee on it.


    Screen shot of Arduino serial reader showing my bin data…with some lovely notes included in red.

    PING Documentation from Katrina Bekessy on Vimeo.

    Current problems I’m having:

    -getting my Windbond chip to change tracks and play back the sound right after
    -normalizing my FSR inputs to numbers that actually mean something
    -keeping the stupid IR sensors consistent. Everytime I turn them on they start with different readings than before

    Next things I need to do:

    -include FSR’s and photoresistor (for lid of bin) with rest of my circuit using a multiplexer
    -get XBee’s to send bin data to computer wirelessly
    -build working circuit into actual trashbin
    -refine code to make readings more accurate

    Am in way over my head? Yes, yes I am…

    Here’s my long Arduino code thus far. I’m sure it could be written much more succinctly/efficiently…

    #define NUMREADINGS1 10
    #define NUMREADINGS2 10
    #define NUMREADINGS3 10
    #define NUMREADINGS4 10

    int readings1[NUMREADINGS1];
    int index1 = 0;
    int total1 = 0;
    int average1 = 0;

    int readings2[NUMREADINGS2];
    int index2 = 0;
    int total2 = 0;
    int average2 = 0;

    int readings3[NUMREADINGS3];
    int index3 = 0;
    int total3 = 0;
    int average3 = 0;

    int readings4[NUMREADINGS4];
    int index4 = 0;
    int total4 = 0;
    int average4 = 0;

    int IR1 = 0;
    int valIR1 = 0;

    int IR2 = 1;
    int valIR2 = 0;

    int IR3 = 3;
    int valIR3 = 0;

    int IR4 = 4;
    int valIR4 = 0;

    boolean readBin = true;

    int playPin = 2;
    int fwdPin = 3;
    int trackCount = 1;

    int wasteCount = 0;
    int recCount = 0;
    int greenLED = 4;
    int yellowLED = 5;

    void setup()
      pinMode(playPin, OUTPUT);
      pinMode(fwdPin, OUTPUT);
      pinMode(greenLED, OUTPUT);
      pinMode(yellowLED, OUTPUT);
      for (int i = 0; i < NUMREADINGS1; i++){
        readings1[i] = 0;
      for (int j = 0; j < NUMREADINGS2; j++){
        readings2[j] = 0;
      for (int h = 0; h < NUMREADINGS3; h++){
        readings3[h] = 0;
      for (int k = 0; k < NUMREADINGS4; k++){
        readings4[k] = 0;

    void loop()
      digitalWrite(fwdPin, HIGH);
      digitalWrite(playPin, HIGH);
      if(readBin == true){
        total1 -= readings1[index1];
        readings1[index1] = analogRead(IR1);
        total1 += readings1[index1];
        index1 = (index1 + 1);
        if (index1 >= NUMREADINGS1){
          index1 = 0;
        average1 = total1 / NUMREADINGS1;
        total2 -= readings2[index2];
        readings2[index2] = analogRead(IR2);
        total2 += readings2[index2];
        index2 = (index2 + 1);
        if (index2 >= NUMREADINGS2){
          index2 = 0;
        average2 = total2 / NUMREADINGS2;
        total3 -= readings3[index3];
        readings3[index3] = analogRead(IR3);
        total3 += readings3[index3];
        index3 = (index3 + 1);
        if (index3 >= NUMREADINGS3){
          index3 = 0;
        average3 = total3 / NUMREADINGS3;
        total4 -= readings4[index4];
        readings4[index4] = analogRead(IR4);
        total4 += readings4[index4];
        index4 = (index4 + 1);
        if (index4 >= NUMREADINGS4){
          index4 = 0;
        average4 = total4 / NUMREADINGS4;
        if(average1 > 365 || average2 > 365){
          readBin = false;
          recCount ++;
          if(trackCount == 1){
          } else {
            digitalWrite(fwdPin, LOW);
            digitalWrite(fwdPin, HIGH);
            trackCount = 1;
        if(average3 > 365 || average4 > 365){
          readBin = false;
          wasteCount ++;
          if(trackCount == 2){
          } else {
            digitalWrite(fwdPin, LOW);
            digitalWrite(fwdPin, HIGH);
            trackCount = 2;
      if(recCount > wasteCount){
        digitalWrite(greenLED, HIGH);
        digitalWrite(yellowLED, LOW);
      else if(wasteCount > recCount){
        digitalWrite(yellowLED, HIGH);
        digitalWrite(greenLED, LOW);
      else {
        digitalWrite(yellowLED, LOW);
        digitalWrite(greenLED, HIGH);

    void playBack(){
      digitalWrite(playPin, LOW);
      digitalWrite(playPin, HIGH);
      readBin = true;

  • Yury Gitman 11:54 pm on November 30, 2008 Permalink | Reply  

    antisocial cat_ servo prototype 

    Prototype 005
    Materials: PIC16F88, breadboard, servo, pot
    – The servo could keep turning left and right, but I couldn’t control its speed and directions.
    – I found that Arduino has a servo library that is easy to use for controlling servos. So I decided to switch to Arduino board.

    servo test from maze on Vimeo.

    Prototype 006
    Materials: Arduino, servo, breadboard, IR sensor
    – In the very beginning, the range of IR sensor was too small. Thus the servo only moved when I almost touched the sensor. Here I scaled the value of IR sensor from 0-1023 to 0-179.

    – The servo had a problem of drawing too much current.


    – So I did iteration by separating power supply for the servo, but joined the grounds of the two power supplies. I also added decoupling capacitors to stabilize my voltage regulator.





    prototype_arduino+servo+ir sensor from maze on Vimeo.

    – Here is the code:
    #include <Servo.h>

    Servo myservo; //create servo object to control a servo
    int sensor = 0;  // analog pin used to connect the sensor
    int motorPin=11;
    int val;    // variable to read the value from the analog pin

    void setup()
      Serial.begin(9600);           // set up Serial library at 9600 bps
      pinMode(sensor, INPUT);
      //pinMode(relay, OUTPUT);
      pinMode(motorPin, OUTPUT);


    int getSensor() {
      val = analogRead(sensor);            // reads the value of the potentiometer (value between 0 and 1023)
      val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)


      return val;
    } //end of getSensor

    int moveFoward() {
      analogWrite(motorPin, getSensor());
      digitalWrite(motorPin, LOW);
      //digitalWrite(relay, HIGH);

    int moveBackward() {
      analogWrite(motorPin, getSensor());
      digitalWrite(motorPin, LOW);
      //digitalWrite(relay, LOW);

    void loop()
        if (val<140){
            myservo.write(val);                  // sets the servo position according to the scaled value
            delay(15);                           // waits for the servo to get there
        }//end of if

      }//end of while

    – I tried to pause the servo after every time it turns by expanding the delay time of myservo.write(). However, its movement became unpredictable. Then I tried moveFoward() and moveBackward() above, but they didn’t work well either.
    – Another problem I have is the click sound of servo. I was wondering if extreme turning angles like 179 or 180 caused those noise.

    • M Bethancourt 8:51 am on December 2, 2008 Permalink | Reply

      Your Servo is probably fine. The USB Over Current notice means that there is a short somewhere in your circuit.

    • M Bethancourt 8:53 am on December 2, 2008 Permalink | Reply

      That’s a damn cute anti-social cat you’ve got up there.

  • Yury Gitman 2:14 pm on November 18, 2008 Permalink | Reply  

    zipper test 

    Here’s my first zipper test on a breadboard before its sewn into the pants.

    zipper test from Lynn WasHere on Vimeo.

  • Yury Gitman 12:55 am on November 17, 2008 Permalink | Reply  

    Bchito : Week 01 


    (More …)

  • Yury Gitman 8:58 pm on November 9, 2008 Permalink | Reply  

    07 IR sensor + Recorder 


    I set three functions for different range of distance as fallowing:
    1.about 50-80cm: Play
    2.about 15-50cm: Play and fwd
    3.about under 15cm: Play and change volume

    Here’s the video where I use three leds to test if the code works first.

    LED + IR from Hsiang Ju Hung on Vimeo.

    The left led is Play, the middle one is Fwd, and the right one is Vol.
    So, it works fine with pin high and low/led on and off.
    And here is the code.Download ir_recorder.rtf

    Then I put the connectors  to the recorder.
    Here is what happen on level 1 and 2.

    Level First to Second from Hsiang Ju Hung on Vimeo.

    Level 3, which will keep changing volume on the same sound file if you stay longer.

    Level Third: keeps changing volume from Hsiang Ju Hung on Vimeo.

  • Yury Gitman 1:12 am on November 4, 2008 Permalink | Reply  

    Winbond + Arduino V1 

    Winbond + Arduino from Jennifer Dopazo on Vimeo.

    The first attempt…

    (More …)

  • Yury Gitman 5:18 pm on October 28, 2008 Permalink | Reply  

    IR sensor + 3 LEDS 

    Here’s the fine video of my IR sensor actually working!!

    Another IR sensor + 3 LEDS from Joana Kelly on Vimeo.

    I had some wacky issues connecting my IR sensor, but found a useful diagram, also including here:

    I ended up adapting Matt’s code also. My original code made the lights flicker a lot, but Matt averaged out the IR signal quite effectively. Kudos to you, sir. Matt’s code is also after the jump.

    (More …)

    • Surveillance Solutions 6:21 am on March 22, 2010 Permalink | Reply

      I’ve being researching about IR Devices and reading your blog, I found your post very helpful 🙂 . I thought I would leave my first comment. I don’t know what to say except that I have enjoyed reading.

  • Yury Gitman 7:38 pm on October 26, 2008 Permalink | Reply  

    IR sensor with three LEDs 

    IR sensor with three LEDs from Jennifer Dopazo on Vimeo.

    (More …)

  • Yury Gitman 5:06 pm on October 21, 2008 Permalink | Reply  

    Audio Recorder 

    Here is the push buttons and LED lights:


    Here is the speaker cover/with plastic tube beneath to amplify the sound

    (More …)

Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc