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);
  }
}



jueves, 12 de septiembre de 2013

Laboratorio 5

Descripción 

En este laboratorio controlamos un LED RGB desde el Arduino, vía PWM con tres potenciometros, uno para cada color. 

Implemento

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


Diagrama del montaje en la protoboard



 

Diagrama esquemático del circuito





Fotos del montaje





Vídeo del funcionamiento 



Código fuente en arduino


int x,y,z,pot1,pot2,pot3;

void setup() {                
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(A5, INPUT);
  pinMode(A4, INPUT);
  pinMode(A0, INPUT);    


}
void loop() {

  pot1=analogRead(A5);
  x=map(pot1,0,1023,0,255);

  pot2=analogRead(A4);
  y=map(pot2,0,1023,0,255);

  pot3=analogRead(A0);
  z=map(pot3,0,1023,0,255);

  analogWrite(9, x);   
  analogWrite(10, y);  
  analogWrite(11, z);  
}


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);
     }



miércoles, 4 de septiembre de 2013

Laboratorio 3

Descripcion

En este laboratorio se controlan 8 LEDs desde el arduino, un LED encendido que se mueve en forma continua de izquierda a derecha, usando los valores de dos potenciometros para controlar los tiempos que el LED permanece encendido y apagado.

Implemento


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

Diagrama del montaje en la protoboard






Diagrama esquemático del circuito





Fotos del montaje.










Vídeo del funcionamiento.






Código fuente en arduino.


const int MAXLED = 8;
int led[MAXLED] = {2,3,4,5,6,7,8,9};
int pot1 = A0;
int pot2 = A1;

void setup() {
  for (int i=0; i<MAXLED; i++)
    pinMode(led[i], OUTPUT);
    pinMode(pot1, INPUT);
    pinMode(pot2, INPUT);
}


void loop() {
  
   
  for (int i=0; i<MAXLED; i++) {
  int  valorpot1 = analogRead(pot1);
  int  valorpot2 = analogRead(pot2);
    prender(led[i], valorpot1);
    apagar(led[i], valorpot2);
  }
  
  for (int i=MAXLED-2; i>0; i--) {
  int  valorpot1 = analogRead(pot1);
  int  valorpot2 = analogRead(pot2);
    prender(led[i], valorpot1);
    apagar(led[i], valorpot2);
  }
  
  
}


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

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

}


martes, 3 de septiembre de 2013

Laboratorio 2

Descripción

En este laboratorio controlamos 8 LEDs desde el arduino, un LED encendido que se mueve de izquierda a derecha según la posición del potenciometro.


Implemento

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

Diagrama del montaje en la protoboard






Diagrama esquemático del circuito





Fotos del montaje.







Vídeo del funcionamiento.




Código fuente en arduino.


#define MAXLED 8
#define pot A0

int led[MAXLED] = { 2,3,4,5,6,7,8,9};

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

void loop()
{
  int valor = analogRead(pot);
  int i = map(valor, 0, 1023, 0, 7);
  prender(led[i], 20);
  apagar(led[i], 5);
}

void prender(int l, int t){
  digitalWrite(l, HIGH);
  delay(t);
}

void apagar(int l, int t){
  digitalWrite(l, LOW);
  delay(t);

}

lunes, 2 de septiembre de 2013

Laboratorio 1

laboratorio 1 

Descripción.  

En este laboratorio controlamos 8 LEDs desde el arduino, un LED encendido que se mueve en forma contuina de izquierda a derecha y en sentido contrario.

Implemento

  • 1 arduino
  • 1 protoboard
  • 8 resistencias 
  • 8 LEDs
  • 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.


#define MAXLED 8

int led[MAXLED] = {2,3,4,5,6,7,8,9};

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

void loop()
{
for(int i = 0; i < MAXLED; i++)
{
prender(led[i],500);
apagar(led[i], 100);
}
}

void prender(int l, int t){
digitalWrite(l, HIGH);
delay(t);
}

void apagar(int l, int t){
digitalWrite(l, LOW);
delay(t);
}