Posts Tagged ‘physical computing’

Printer disassembly + baby

Thursday, April 26th, 2012

A stop motion animation from my studio in Berlin 2011 where I disassemble and reuse old ink jet printers to construct new a series of kinetic artworks. Guest starring Joelle and four-month-old Sophia.

You Never Close Your Eyes Anymore @ AC Direct

Thursday, July 1st, 2010

close-your-eyes-ac-direct-me-19_1000h

You Never Close Your Eyes Anymore opens tonight at AC Institute in Chelsea.

July 1 – July 31, 2010
Opening: Thursday, July 1, 2010 6-8pm

AC Institute [Direct Chapel]
547 W. 27th St, 5th Floor
New York, NY

Gallery Hours: Wed., Fri. & Sat.: 1-6pm, Thurs.: 1-8pm

close-your-eyes-ac-direct-me-14_1000h

close-your-eyes-ac-direct-me-23_compTop_1000w_cropped

close-your-eyes-ac-direct-me-24_compBot_1000w

Schematic for You Never Close Your Eyes Anymore

Friday, June 11th, 2010

“Open sourcing” the schematic for the electronic components for You Never Close Your Eyes Anymore.

Picture 5

Products:

RBBB boards (Arduino clone)
custom-designed circuits
– female headers
– TIP31 transistor
– 6-wire Unipolar Stepper motor (48 step Nippon Electric Pulse Motor)
– ULN2803A Darlington Array
– hook-up wire
– various resistors
– LEDs
used camera lenses
aluminum “flat bar”
hose clamps
rubber wine corks
various mounting hardware

Mass Production

Wednesday, June 2nd, 2010

DSC01046

Preparing for show at AC Institute in New York.

Fading an LED with PWM and a Potentiometer

Saturday, May 8th, 2010

Using a potentiometer and PWM on an Arduino to fade an LED.

  1.  
  2. /* POT to LED test -> by Owen Mundy March 11, 2010
  3.    from: http://itp.nyu.edu/physcomp/Labs/AnalogIn
  4. —————————————————————*/
  5.  
  6. int potPin = 0;    // Analog input pin that the potentiometer is attached to
  7. int potValue = 0;  // value read from the pot
  8. int led = 9;      // PWM pin that the LED is on.  n.b. PWM 0 is on digital pin 9
  9.  
  10. void setup() {
  11.   // initialize serial communications at 9600 bps:
  12.   Serial.begin(9600);
  13.   // declare the led pin as an output:
  14.   pinMode(led, OUTPUT);
  15. }
  16.  
  17. void loop() {
  18.   potValue = analogRead(potPin); // read the pot value
  19.   analogWrite(led, potValue/4);  // PWM the LED with the pot value (divided by 4 to fit in a byte)
  20.   Serial.println("hello");      // print the pot value back to the debugger pane
  21.   delay(10);                     // wait 10 milliseconds before the next loop
  22. }
  23.  

Here is the schematic for the above project.

Using PWM and a potentiometer to fade an LED and drive a stepper motor, powered by a Boarduino RBBB.

  1.  
  2. /*
  3.   Owen Mundy
  4.  July 29, 2009
  5.  
  6.  p. 262 of Physical Computing
  7.  Using BBB to run stepper motor by manually moving steppers
  8.  
  9.  */
  10.  
  11. int pin1 = 3;                 // PWM
  12. int pin2 = 5;                 // PWM
  13. int pin3 = 6;                 // PWM
  14. int pin4 = 9;                 // PWM
  15. int ledpin = 13;              // LED
  16. int led = false;              // LED monitor
  17. int motor_time_lapse = 80;
  18.  
  19. int potPin = 0;      // Analog input pin that the potentiometer is attached to
  20. int potValue = 0;    // value read from the pot
  21. int ledPotPin = 11;  // PWM pin that the LED is on.  n.b. PWM 0 is on digital pin 9
  22.  
  23.  
  24. void setup()
  25. {
  26.   pinMode(pin1, OUTPUT);      // sets the pin as output
  27.   pinMode(pin2, OUTPUT);      // sets the pin as output
  28.   pinMode(pin3, OUTPUT);      // sets the pin as output
  29.   pinMode(pin4, OUTPUT);      // sets the pin as output
  30.   pinMode(ledpin, OUTPUT);    // sets the pin as output
  31.  
  32.   // initialize serial communications at 9600 bps:
  33.   Serial.begin(9600);
  34.   // declare the led pin as an output:
  35.   pinMode(ledPotPin, OUTPUT);
  36. }
  37.  
  38. void loop()
  39. {
  40.   potValue = analogRead(potPin); // read the pot value
  41.   analogWrite(ledPotPin, potValue/4);  // PWM the LED with the pot value (divided by 4 to fit in a byte)
  42.   Serial.println(potValue);
  43.  
  44.   digitalWrite(pin1, HIGH);   // on
  45.   digitalWrite(pin2, LOW);    // off
  46.   digitalWrite(pin3, HIGH);   // on
  47.   digitalWrite(pin4, LOW);    // off
  48.   delay(motor_time_lapse);    // wait
  49.  
  50.  
  51.   digitalWrite(pin1, LOW);    // off
  52.   digitalWrite(pin2, HIGH);   // on
  53.   digitalWrite(pin3, HIGH);   // on
  54.   digitalWrite(pin4, LOW);    // off
  55.   delay(motor_time_lapse);    // wait
  56.  
  57.   digitalWrite(pin1, LOW);    // off
  58.   digitalWrite(pin2, HIGH);   // on
  59.   digitalWrite(pin3, LOW);    // off
  60.   digitalWrite(pin4, HIGH);   // on
  61.   delay(motor_time_lapse);    // wait
  62.  
  63.  
  64.   digitalWrite(pin1, HIGH);   // on
  65.   digitalWrite(pin2, LOW);    // off
  66.   digitalWrite(pin3, LOW);    // off
  67.   digitalWrite(pin4, HIGH);   // on
  68.   delay(motor_time_lapse);    // wait
  69.  
  70.   blink();
  71. }
  72.  
  73. void blink()
  74. {
  75.   if (led == false)
  76.   {
  77.     led = true;
  78.     digitalWrite(ledpin, HIGH); // on  
  79.   }
  80.   else
  81.   {
  82.     led = false;
  83.     digitalWrite(ledpin, LOW); // on  
  84.   }
  85. }

Two stepper motors, one directly connected to PWM on BBB

Thursday, July 30th, 2009

Testing to see if this motor can connect directly to PWM on BBB (Freeduino).

Code embedded in previous post.

BBB (Freeduino) and stepper motor test

Wednesday, July 29th, 2009

Test with BBB (Freeduino) board, Darlington H-Bridge, Mabuchi # PF35T-48L4 stepper motor. Many thanks to Tom Igoe and his Physical computing book.

  1. /*
  2.   Owen Mundy
  3.   July 29, 2009
  4.  
  5.   p. 262 of Physical Computing
  6.   Using BBB to run stepper motor by manually moving steppers
  7.  
  8. */
  9.  
  10. int pin1 = 3;                 // PWM
  11. int pin2 = 5;                 // PWM
  12. int pin3 = 6;                 // PWM
  13. int pin4 = 9;                 // PWM
  14. int ledpin = 13;              // LED
  15.  
  16. void setup()
  17. {
  18.   pinMode(pin1, OUTPUT);      // sets the pin as output
  19.   pinMode(pin2, OUTPUT);      // sets the pin as output
  20.   pinMode(pin3, OUTPUT);      // sets the pin as output
  21.   pinMode(pin4, OUTPUT);      // sets the pin as output
  22.   pinMode(ledpin, OUTPUT);      // sets the pin as output
  23. }
  24.  
  25. void loop()
  26. {
  27.   for (int i=0; i<24; i++)
  28.   {
  29.     digitalWrite(pin1, HIGH);   // on
  30.     digitalWrite(pin2, LOW);    // off
  31.     digitalWrite(pin3, HIGH);   // on
  32.     digitalWrite(pin4, LOW);    // off
  33.     delay(10);                  // waits for a second
  34.  
  35.     digitalWrite(pin1, LOW);    // off
  36.     digitalWrite(pin2, HIGH);   // on
  37.     digitalWrite(pin3, HIGH);   // on
  38.     digitalWrite(pin4, LOW);    // off
  39.     delay(10);                  // waits for a second
  40.  
  41.     digitalWrite(pin1, LOW);    // off
  42.     digitalWrite(pin2, HIGH);   // on
  43.     digitalWrite(pin3, LOW);    // off
  44.     digitalWrite(pin4, HIGH);   // on
  45.     delay(10);                  // waits for a second
  46.  
  47.     digitalWrite(pin1, HIGH);   // on
  48.     digitalWrite(pin2, LOW);    // off
  49.     digitalWrite(pin3, LOW);    // off
  50.     digitalWrite(pin4, HIGH);   // on
  51.     delay(10);                  // waits for a second
  52.   }
  53.  
  54.   blink();
  55.  
  56.   for (int i=0; i<24; i++)
  57.   {
  58.  
  59.     digitalWrite(pin1, HIGH);   // on
  60.     digitalWrite(pin2, LOW);    // off
  61.     digitalWrite(pin3, LOW);    // off
  62.     digitalWrite(pin4, HIGH);   // on
  63.     delay(10);                  // waits for a second
  64.  
  65.     digitalWrite(pin1, LOW);    // off
  66.     digitalWrite(pin2, HIGH);   // on
  67.     digitalWrite(pin3, LOW);    // off
  68.     digitalWrite(pin4, HIGH);   // on
  69.     delay(10);                  // waits for a second
  70.  
  71.     digitalWrite(pin1, LOW);    // off
  72.     digitalWrite(pin2, HIGH);   // on
  73.     digitalWrite(pin3, HIGH);   // on
  74.     digitalWrite(pin4, LOW);    // off
  75.     delay(10);                  // waits for a second
  76.    
  77.     digitalWrite(pin1, HIGH);   // on
  78.     digitalWrite(pin2, LOW);    // off
  79.     digitalWrite(pin3, HIGH);   // on
  80.     digitalWrite(pin4, LOW);    // off
  81.     delay(10);                  // waits for a second
  82.   }
  83.  
  84.   blink();
  85.  
  86.   for (int i=0; i<6; i++)
  87.   {
  88.     digitalWrite(pin1, HIGH);   // on
  89.     digitalWrite(pin2, LOW);    // off
  90.     digitalWrite(pin3, HIGH);   // on
  91.     digitalWrite(pin4, LOW);    // off
  92.     delay(10);                  // waits for a second
  93.  
  94.     digitalWrite(pin1, LOW);    // off
  95.     digitalWrite(pin2, HIGH);   // on
  96.     digitalWrite(pin3, HIGH);   // on
  97.     digitalWrite(pin4, LOW);    // off
  98.     delay(10);                  // waits for a second
  99.  
  100.     digitalWrite(pin1, LOW);    // off
  101.     digitalWrite(pin2, HIGH);   // on
  102.     digitalWrite(pin3, LOW);    // off
  103.     digitalWrite(pin4, HIGH);   // on
  104.     delay(10);                  // waits for a second
  105.  
  106.     digitalWrite(pin1, HIGH);   // on
  107.     digitalWrite(pin2, LOW);    // off
  108.     digitalWrite(pin3, LOW);    // off
  109.     digitalWrite(pin4, HIGH);   // on
  110.     delay(10);                  // waits for a second
  111.   }
  112.  
  113.   blink();
  114.  
  115.   for (int i=0; i<6; i++)
  116.   {
  117.  
  118.     digitalWrite(pin1, HIGH);   // on
  119.     digitalWrite(pin2, LOW);    // off
  120.     digitalWrite(pin3, LOW);    // off
  121.     digitalWrite(pin4, HIGH);   // on
  122.     delay(10);                  // waits for a second
  123.  
  124.     digitalWrite(pin1, LOW);    // off
  125.     digitalWrite(pin2, HIGH);   // on
  126.     digitalWrite(pin3, LOW);    // off
  127.     digitalWrite(pin4, HIGH);   // on
  128.     delay(10);                  // waits for a second
  129.  
  130.     digitalWrite(pin1, LOW);    // off
  131.     digitalWrite(pin2, HIGH);   // on
  132.     digitalWrite(pin3, HIGH);   // on
  133.     digitalWrite(pin4, LOW);    // off
  134.     delay(10);                  // waits for a second
  135.    
  136.     digitalWrite(pin1, HIGH);   // on
  137.     digitalWrite(pin2, LOW);    // off
  138.     digitalWrite(pin3, HIGH);   // on
  139.     digitalWrite(pin4, LOW);    // off
  140.     delay(10);                  // waits for a second
  141.   }
  142.  
  143.   blink();
  144.  
  145. }
  146.  
  147. void blink()
  148. {
  149.   digitalWrite(ledpin, HIGH); // on  
  150.   delay(1000);                // waits for a second
  151.   digitalWrite(ledpin, LOW);  // off  
  152. }