jueves, 5 de septiembre de 2013

Laboratorio 4

Descripción

En este laboratorio controlamos 8 LEDs desde el Arduino, un LED encendido que se mueve en forma continua de izquierda a derecha, vía una interfaz gráfica en Processing/ControlP5 para controlar el tiempo de encendido y el tiempo de apagado.

Implemento

  • 1 arduino
  • 1 protoboard
  • 8 resistencias 
  • 8 LEDs
  • cable UTP

Diagrama del montaje en la protoboard




Diagrama esquemático del circuito




Interfaz gráfica en Processing/ControlP5


Fotos del montaje 






Vídeo del funcionamiento.


Código fuente en arduino.



#define MAXLED 8

int led [MAXLED]={2,3,4,5,6,7,8,9};
int valor=0;
int i=0; 
int t_on=500;
int t_off=100;
int inc=1;

void setup(){
  Serial.begin(9600);
  for (int i=0; i<MAXLED; i++){
    pinMode(led[i], OUTPUT);  
  }
}

void loop() {
  if (Serial.available()>0){
    valor=Serial.read();
    if(valor=='t')
      t_on=Serial.parseInt();
    
    if(valor=='q')
      t_off=Serial.parseInt();


  }
  on(led[i], t_on);
  off(led[i], t_off);
  i+=inc;
  if (i>MAXLED-1) inc=-1;
  if (i==0) inc=+1;

}

void on(int led, int ms) {
  digitalWrite(led, HIGH);
  delay(ms);
}

void off(int led, int ms) {
  digitalWrite(led, LOW);
  delay(ms); 

}


Código fuente en Processing.


import processing.serial.*;
import controlP5.*;
ControlP5 cp5;
Slider slider1;
Button boton1;
Knob   perilla1;
Serial puerto;

void setup(){
  size(600,400);
  puerto = new Serial(this, Serial.list()[0],9600);
  cp5 = new ControlP5(this);
  slider1 = cp5.addSlider("t",0,1000,200,40,40,300,40);
  slider1.setColor(new CColor (0x80008000,0xFF808080,0x80FF0000,0x80FF80FF,0xFF80FF00));
  boton1 = cp5.addButton("aceptar",50,40,100,80,40);
  boton1.setColor(new CColor (0x8000FF00,0xFF808000,0x80FF0000,0x00000000,0xFFFFFFFF));
  perilla1 = cp5.addKnob("q",0,500,150,400,40,100);
  perilla1.setColor(new CColor (0x8000FF00,0xFF808080,0xFFFF0000,0xFFFFFF00,0x00000000));
  }
 
  void draw()
    {
    background(0);
    }
   
    void controlEvent (ControlEvent  theEvent){
   
   String nombre=theEvent.getController().getName();
   int valor=int(theEvent.getController().getValue());
   println( nombre + ":" + valor);
   puerto.write(nombre+valor);
     }



No hay comentarios:

Publicar un comentario