CEB Press/Manufacturing Instructions/Detroit Fab Lab Solenoid Driver: Difference between revisions

From Open Source Ecology
Jump to navigation Jump to search
No edit summary
No edit summary
Line 10: Line 10:


Here is some sample source code to test the five pins. <html><b>Warning: Connecting the drivers to the solenoid unit incorrectly can ruin the unit.</b></html>
Here is some sample source code to test the five pins. <html><b>Warning: Connecting the drivers to the solenoid unit incorrectly can ruin the unit.</b></html>
int pwm_a = 11;
int pwm_b = 10;
int pwm_c = 9;
int pwm_d = 6;
int pwm_e = 3;
int i;
void setup()
{
  pinMode(pwm_a, OUTPUT);
  pinMode(pwm_b, OUTPUT);
  pinMode(pwm_c, OUTPUT); 
  pinMode(pwm_d, OUTPUT); 
  pinMode(pwm_e, OUTPUT); 
  Serial.begin(9600);
}
void loop()
{
  //
  //fade all channels up and down.
  //
  Serial.println("Fading all pwm channels up to max.");
  for (i=0; i<=255; i++)
  {
      analogWrite(pwm_a, i);
      analogWrite(pwm_b, i);
      analogWrite(pwm_c, i);
      analogWrite(pwm_d, i);
      analogWrite(pwm_e, i);
 
      delay(100);
  }
 
        Serial.println("All pwm channels at max.");
  delay(1000);
        Serial.println("Fading all channels to 0");
       
        for (i=255; i>=0; i--)
  {
      analogWrite(pwm_a, i);
      analogWrite(pwm_b, i);
      analogWrite(pwm_c, i);
      analogWrite(pwm_d, i);
      analogWrite(pwm_e, i);
      delay(100); 
  }
  Serial.println("All pwm channels at zero.");
        delay(1000);
 
        fade_channel(pwm_a);
        fade_channel(pwm_b);
        fade_channel(pwm_c);
        fade_channel(pwm_d);
        fade_channel(pwm_e);
}
void fade_channel(int channel)
{
  Serial.println("Fading pwm channel to max: ");
        Serial.println(channel);
               
  for (i=0; i<=255; i++)
  {
      analogWrite(channel, i);
      delay(100);
  }
  Serial.println("pwm channel at max.");
        delay(1000);
        Serial.println("fading down.");
 
        for (i=255; i>=0; i--)
  {
      analogWrite(channel, i);
      delay(100); 
  }
  Serial.println("pwm channel at 0.");
        delay(1000);
}

Revision as of 14:59, 23 July 2011

The Detroit Fab Lab has provided a custom-manufactured board that offers the five solenoid driver outputs required by the CEB Press. The card plugs into the Arduino Breakout Shield. The Five pins used to drive the five solenoid connections are as follows:

  • D11
  • D10
  • D9
  • D6
  • D3


Here is some sample source code to test the five pins. Warning: Connecting the drivers to the solenoid unit incorrectly can ruin the unit.

int pwm_a = 11; int pwm_b = 10; int pwm_c = 9; int pwm_d = 6; int pwm_e = 3; int i;

void setup() {

  pinMode(pwm_a, OUTPUT);
  pinMode(pwm_b, OUTPUT);
  pinMode(pwm_c, OUTPUT);   
  pinMode(pwm_d, OUTPUT);   
  pinMode(pwm_e, OUTPUT);   
  Serial.begin(9600);

}

void loop() {

  //
  //fade all channels up and down.
  //
  Serial.println("Fading all pwm channels up to max.");
  for (i=0; i<=255; i++)
  {
     analogWrite(pwm_a, i);
     analogWrite(pwm_b, i);
     analogWrite(pwm_c, i);
     analogWrite(pwm_d, i);
     analogWrite(pwm_e, i);
  
     delay(100);
  }
  
       Serial.println("All pwm channels at max.");
  delay(1000);
       Serial.println("Fading all channels to 0");
       
       for (i=255; i>=0; i--)
  {
     analogWrite(pwm_a, i);
     analogWrite(pwm_b, i);
     analogWrite(pwm_c, i);
     analogWrite(pwm_d, i);
     analogWrite(pwm_e, i);
     delay(100);   
  }
  Serial.println("All pwm channels at zero.");
       delay(1000);
  
       fade_channel(pwm_a);
       fade_channel(pwm_b);
       fade_channel(pwm_c);
       fade_channel(pwm_d);
       fade_channel(pwm_e);

}

void fade_channel(int channel) {

  Serial.println("Fading pwm channel to max: ");
       Serial.println(channel);
               
  for (i=0; i<=255; i++)
  {
     analogWrite(channel, i);
     delay(100);
  }
  Serial.println("pwm channel at max.");
       delay(1000);
       Serial.println("fading down.");
  
       for (i=255; i>=0; i--)
  {
     analogWrite(channel, i);
     delay(100);   
  }
  Serial.println("pwm channel at 0.");
       delay(1000);

}