jueves, 19 de septiembre de 2013

Laboratorio 6

Descripción

En este laboratorio controlamos un LED RGB desde el arduino, vía un interfaz gráfico en processing/ControlP5 para controlar el valor de cada color.

Implemento

  • 1 arduino
  • 1 protoboard
  • 3 resistencias 
  • 1 LED RGB
  • cable UTP

Diagrama del montaje en la protoboard




Diagrama esquemático del circuito





Fotos del montaje





Vídeo del funcionamiento 



Código fuente en arduino 

int ledR = 11;
int ledG = 10;
int ledB = 9;

int valor;

void setup() {                
  pinMode(ledR, OUTPUT);
  pinMode(ledG, OUTPUT);
  pinMode(ledB, OUTPUT);
  Serial.begin(9600);

}
// the loop routine runs over and over again forever:
void loop() {


  //x = Serial.read();

  while (Serial.available() < 1);
  char letra = Serial.read();
  while (Serial.available() < 1);
  valor = 255-Serial.read();

  if (letra == 'r')
    analogWrite(ledR, valor);
  if (letra == 'g')
    analogWrite(ledG, valor);
  if (letra == 'b')
    analogWrite(ledB, valor);  


}

Código fuente en processing 

// utilizar la libreria ControlP5
import controlP5.*;
import processing.serial.*;


// definir la variable cp5 del tipo ControlP5
ControlP5 cp5;
Serial puerto;

// como deseamos controlar los colores RGB
// necesitamos 3 variables
int valR = 128;  
int valG = 128;  
int valB = 128;  

// configuración inicial
void setup() {

  size(240, 500); // tamaño de la ventana
  noStroke();     // no dibujar el border del rectángulo

  // crear el objeto ControlP5
  cp5 = new ControlP5(this);

  // crear el Slider para el color Rojo
  Slider slideR =
    cp5.addSlider("R", 0, 255, 128, 15, 180, 50, 300);
  slideR.setColor( new CColor(
    0xFFAA0000, 0xFF550000, 0xFFFF0000,
    0xFFFFFFFF, 0xFFFFFFFF));
  // crear el Slider para el color Verde
  Slider slideG =
    cp5.addSlider("G", 0, 255, 128, 95, 180, 50, 300);
  slideG.setColor( new CColor(
    0xFF00AA00, 0xFF005500, 0xFF00FF00,
    0xFFFFFFFF, 0xFFFFFFFF));
  // crear el Slider para el color Azul
  Slider slideB =
    cp5.addSlider("B", 0, 255, 128, 175, 180, 50, 300);
  slideB.setColor( new CColor(
    0xFF0000AA, 0xFF000055, 0xFF0000FF,
    0xFFFFFFFF, 0xFFFFFFFF));
    
    String COM = Serial.list()[0];
    puerto = new Serial(this, COM, 9600);

}

// dibujar cada frame
void draw()  
{
  background(0xFF444444);  // color gris del fondo
  // definir el color de relleno combinando los valores
  // de los colores de los 3 Sliders
  fill(valR, valG, valB);  
  // dibujar el rectángulo con ese color
  rect(15, 15, 210, 150);
  
}  

// actuar cuando ocurra un evento con los Sliders
public void controlEvent(ControlEvent theEvent) {
  // guardar el nombre y valor del evento
  String nombre = theEvent.getController().getName();
  int valor = int(theEvent.getController().getValue());

  // guardar el valor en la variable para cada color
  if (nombre == "R") {
     valR = valor;
      puerto.write('r');
      puerto.write(valR);      
  }
  if (nombre == "G") {
     valG = valor;
      puerto.write('g');
      puerto.write(valG);
  }
  if (nombre == "B") {
     valB = valor;
      puerto.write('b');
      puerto.write(valB);
  }
}



No hay comentarios:

Publicar un comentario