miércoles, 22 de febrero de 2012

Proyecto #1

A continuación os detallo mi primer trabajo artístico utilizando la microcontroladora opensource ARDUINO. Se trata de una caja de luz en la que, mediante una placa de 4 relés conectados a una Arduino Mega, se logra controlar el encendido y apagado de 4 grupos de luces diferentes.

ARDUINO Mega
Placa de 4 relés a 5V

Todo el tinglado está embutido en una caja de madera de DM de dimensiones 100 x 100 x 10 cms, pintada con acrílico y en la que se han hecho diferentes orificios con una taladradora. En dichos orificios hay una placa de metacrilato con diferentes filtros coloreados. El resultado se muestra en las siguientes fotos:

Estructura interna
Placa ARDUINO + placa de 4 relés

Las 4 fases de luz

A continuación unas líneas de código para quien esté interesado:

/* YourDuino Example: Relay Control 1.10
  Handles "Relay is active-low" to assure
  no relay activation from reset until
  application is ready.
   terry@yourduino.com */

/*-----( Import needed libraries )-----*/
/*-----( Declare Constants )-----*/

#define RELAY_ON 0
#define RELAY_OFF 1

/*-----( Declare objects )-----*/
/*-----( Declare Variables )-----*/

#define Relay_1  2  // Arduino Digital I/O pin number
#define Relay_2  3
#define Relay_3  4
#define Relay_4  5

void setup() 
   /****** SETUP: RUNS ONCE ******/
{
//-------( Initialize Pins so relays are inactive at reset)----

  digitalWrite(Relay_1, RELAY_OFF);
  digitalWrite(Relay_2, RELAY_OFF);
  digitalWrite(Relay_3, RELAY_OFF);
  digitalWrite(Relay_4, RELAY_OFF); 
 
//---( THEN set pins as outputs )---- 

  pinMode(Relay_1, OUTPUT);  
  pinMode(Relay_2, OUTPUT); 
  pinMode(Relay_3, OUTPUT); 
  pinMode(Relay_4, OUTPUT);   
  delay(4000); 
//Check that all relays are inactive at Reset

} 

//--(end setup )---

void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
//---( Turn all 4 relays ON in sequence)---

  digitalWrite(Relay_1, RELAY_ON);
  delay(1000);        
  digitalWrite(Relay_2, RELAY_ON);
  delay(1000);            
  digitalWrite(Relay_3, RELAY_ON);
  delay(1000);           
  digitalWrite(Relay_4, RELAY_ON);
  delay(4000);           
 
//---( Turn all 4 relays OFF in sequence)--- 

  digitalWrite(Relay_1, RELAY_OFF);
  delay(1000);             
  digitalWrite(Relay_2, RELAY_OFF);
  delay(1000);            
  digitalWrite(Relay_3, RELAY_OFF);
  delay(1000);             
  digitalWrite(Relay_4, RELAY_OFF);
  delay(4000);             
 
}
//--(end main loop )---

1 comentario: