jueves, 20 de marzo de 2014

Laboratorio 6

 Controlar 8 LEDs desde el Arduino, a través de un IC 74HC595, definiendo mínimo 8 patrones de movimiento que son controlados desde una interfaz gráfica en Processing/ControlP5. Más información sobre el IC 74HC595

Elementos Utilizados

*8 Led's
*8 Resistencias 
*1 Arduino UNO
*Protoboard
*Pelacable*Cables
*Cable USB
*IC 74HC595

Diagrama del montaje en la Protoboard















Diagrama Esquemático del Circuito








Fotos del Montaje
































Vídeo Funcionamiento

















Codigo Fuente Arduino

  1. #define PIN 3
  2. const int Latch = 8;
  3. const int Clock = 9;
  4. const int Data = 7;
  5. int Pins[PIN] = {
  6.   7,8,9};
  7. int Lect = 0;
  8. boolean OnLed = false;
  9. int Dato = 0;
  10. int i = 0;
  11. int Led[]={1,2,4,8,16,32,64,128};
  12. void setup() {
  13.   for (int j=0; j<PIN; j++){
  14.     pinMode(Pins[j], OUTPUT);
  15.   }
  16.   Serial.begin(9600);
  17. }
  18. void loop()
  19. {
  20.   if (Serial.available()>0) {
  21.    
  22.     Lect = Serial.read();  //Leemos el Dato
  23.    
  24.    
  25.     if (OnLed)
  26.     {
  27.       Suma(Lect);
  28.       On(Dato);
  29.       OnLed = false;
  30.     }
  31.     else
  32.     {
  33.      
  34.       i = Lect;
  35.       OnLed = true;
  36.     }
  37.   }
  38. }
  39. void Suma(int estadoLED){
  40.   if(estadoLED==0)
  41.   {
  42.     Dato = Dato-Led[i];
  43.   }else{
  44.     Dato = Dato+Led[i];
  45.   }  
  46. }
  47. void On(int Valor)
  48. {
  49.   digitalWrite(Latch, LOW);
  50.   shiftOut(Data, Clock, MSBFIRST, Valor);
  51.   digitalWrite(Latch, HIGH);
  52. }

Codigo Proccesing

  1. import controlP5.*;
  2. import processing.serial.*;
  3. ControlP5 cP5;
  4. Serial serial;
  5. int[] led = new int[] {
  6.   0, 0, 0, 0, 0, 0, 0, 0
  7. };
  8. void setup() {
  9.   size(590, 250);  //Tamaño de la ventana
  10.   noStroke();
  11.   cP5 = new ControlP5(this);  //Crea el objeto ControlP5
  12.   // Crea el Knob del color Rojo
  13.   for (int i=0; i<led.length; i++)
  14.   {
  15.     cP5.addToggle("led"+i, 35+i*70, 140, 30, 30)
  16.       .setMode(ControlP5.SWITCH);
  17.   }
  18.   String puerto = Serial.list()[0];
  19.   serial = new Serial(this, puerto, 9600);
  20. }
  21. void draw() {
  22.   background(0xFF444444);
  23.   fill(led[0] == 0 ? 0xFF222222 : color(255, 255, 0));
  24.   ellipse(50, 100, 50, 50);
  25.   for (int i=1; i<4; i++) {
  26.     fill(led[i] == 0 ? 0xFF222222 : color(255, 0, 0));
  27.     ellipse(50+i*70, 100, 50, 50);
  28.   }
  29.   for (int i=4; i<led.length; i++) {
  30.     fill(led[i] == 0 ? 0xFF222222 : color(0, 255, 0));
  31.     ellipse(50+i*70, 100, 50, 50);
  32.   }
  33.    fill(255);
  34.    textFont(createFont("Gill Sans Ultra Bold", 50));
  35.    text("Enciende un LED", 40, 50);
  36.    fill(255);
  37.    textSize(25);
  38.    text("", 120, 230);
  39. }
  40. /
  41. void controlEvent(ControlEvent evento) {
  42.   String nombre = evento.getController().getName();
  43.   int valor = int(evento.getController().getValue());
  44.   // Guarda el valor de cada boton
  45.   for (int i=0; i<led.length; i++) {
  46.     if (nombre.equals("led"+i)) {
  47.       led[i] = valor;
  48.       serial.write(i);
  49.       serial.write(valor);
  50.       println("evento: " + i + " / valor: "+valor);
  51.     }
  52.   }
  53. }

jueves, 13 de marzo de 2014

Laboratorio 4

Controlar un Led RGB desde el Arduino, via PWM con 3 potenciómetros, uno para cada color.

Lista Elementos Utilizados

Cables
Pelacable
Resistencia
Led RGB
Arduino UNO
Cable USB
Potenciómetros
Protoboard

Diagrama Montaje en Protoboard













Diagrama Esquemático del Circuito






Fotos Del Montaje












 Vídeo Funcionamiento





Laboratorio 3

Controlar 8 led's desde el arduino, un led encendido que se mueve en forma continua de izquierda a derecha, via una interfaz grafica en Processing/Control P% para controlar el tiempo de encendido y el tiempo de apagado.

Lista de Elementos Utilizados

Resistencias
Leds
Cables
Pelacable
Protoboard
Arduino UNO
Cable USB

Diagrama del Montaje en la Protoboard












Diagrama Esquemático del Circuito

















Fotos del Montaje























Vídeo Funcionamiento

Codigo fuente Arduino

#define maxleds 8

int t1=0;      
int t2=0;      
int valor=0;    

int led[maxleds] = {13,12,11,10,9,8,7,6};
 int i;        
void setup ()
{
  Serial.begin(9600);
  for (int i=0;i<maxleds;i++)
    pinMode(led[i],OUTPUT);
}
 void loop()
{
  for (int i=0;i<=maxleds;i++)
  {
    if (Serial.available()>0)
    {
      valor = Serial.read();
      if (valor == 'O')
        t1 = Serial.parseInt();
      if (valor == 'F')
        t2 = Serial.parseInt();
    }
    prender(led[i],t1);
    apagar(led[i],t2);
}
  for (int i=maxleds-1;i>=0;i--)
  {
    if (Serial.available()>0)
    {
      valor = Serial.read();
      if (valor == 'O')
        t1 = Serial.parseInt();
      if (valor == 'F')
        t2 = Serial.parseInt();
    }
    prender(led[i],t1);
    apagar(led[i],t2);
  }
}
 void prender(int i, int t)
{
  digitalWrite(i, HIGH);
  delay(t);          
}
 void apagar(int i, int t)
{
  digitalWrite(i, LOW);
  delay(t);        
}


Codigo Processing


import controlP5.*;        
import processing.serial.*;  
ControlP5 cp5;            
Slider slider1;            
Slider slider2;            
Serial serial;            
Textlabel texto1, texto2, texto3, texto4;
Textlabel texto5, texto6;


void setup()
{
serial = new Serial(this, Serial.list()[0],9600);
String puerto = Serial.list()[0];
size(750,330);            
cp5 = new ControlP5(this);


slider1 = cp5.addSlider("O",0,1000,500,40,150,300,40);
slider1.setColor(new CColor(0xFF00FF00,0xFF555555,0xFF009F00,0xFFFFFFFF,0xFFFFFFFF));
slider1.setLabelVisible(false);


slider2 = cp5.addSlider("F",0,1000,500,400,150,300,40);
slider2.setColor(new CColor(0xFF00FF00,0xFF555555,0xFF009F00,0xFFFFFFFF,0xFFFFFFFF));
slider2.setLabelVisible(false);


texto1 = cp5.addTextlabel("label")
                    .setText("LABORATORIO TRES")
                    .setPosition(210,50)
                    .setColorValue(0xffffffFF)
                    .setFont(createFont("Comic Sans MS",30))
                    ;


texto2 = cp5.addTextlabel("label1")
                    .setText("TIEMPO ENCENDIDO (ms)")
                    .setPosition(90,120)
                    .setColorValue(0xffffffFF)
                    .setFont(createFont("Comic Sans MS",15))
                    ;            

 
texto3 = cp5.addTextlabel("label2")
                    .setText("TIEMPO APAGADO (ms)")
                    .setPosition(460,120)
                    .setColorValue(0xffffffFF)
                    .setFont(createFont("Comic Sans MS",15))
                    ;
 
//nombre de estudiante
texto4 = new Textlabel(cp5,"Estudiante: jesus lopez \nTecnologia Industrial",40,230,600,200);
texto4.setFont(createFont("verdana",15));
// programa
}

void draw()
{
background(0,0,0);
 texto4.draw(this);  
}

void controlEvent (ControlEvent evento)
{
String nombre = evento.getController().getName();
int valor = int(evento.getController().getValue());
serial.write(nombre + ":" + valor);
println(nombre + ":" + valor);    
}

jueves, 6 de marzo de 2014

Laboratorio 2

Controlar 8 led's desde el arduino, un led encendido que se mueve en forma continua de izquierda a derecha, usando los valores de dos potenciómetros para controlar los tiempos que el led permanece encendido y apagado

Lista de Elementos Utilizados

Protoboard
8 leds
Resistencias
Cable
Pelacable
2 Potenciómetros
Arduino UNO

Diagrama del Montaje en la Protoboard.














Diagrama Esquemático del Circuito.
















Fotos del Montaje.
























video funcionamiento del arduino.


Código Fuente Arduino