martes, 11 de diciembre de 2012

LABORATORIO # 6


 En este laboratorio se va hacer Igual al Laboratorio 4, pero usando un IC 74HC595 (Shift Register).


METARIALES QUE SE USARON

1 arduino

8 leds 

1 cable usb

1 protoboard

12 cables utp

8 resistencias

1 pc con el programa procesing

FOTOS DEL ENSAMBLAJE









VIDEO DEL MONTAJE


CODIGO QUE SE USO


Codigo fuente arduino:

//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;
// variable tipo char para obtener que slide se esta usando en el proccesing
char res;
//variables donde se guardan el valor que indica cada slide
int encendido=128, apagado=128;
const int MAXLED = 8;
// arreglo de 8 LEDs, desde el pin 2 hasta el pin 9
int led[MAXLED] = {1,2,4,8,16,32,64,128};
void setup() {
  //set pins to output so you can control the shift register
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
   for (int i=0; i   pinMode(led[i], OUTPUT);
   Serial.begin(9600);
}
void loop() {
  // count from 0 to 255 and display the number
  // on the LEDs
 
 for (int i=0; i    leerDatos();
   // take the latchPin low so
    // the LEDs don’t change while you’re sending in bits:
    digitalWrite(latchPin, LOW);
    delay(apagado);
 
 
    // shift out the bits:
    shiftOut(dataPin, clockPin, MSBFIRST,led[i]);
    //take the latch pin high so the LEDs will light up:
    digitalWrite(latchPin, HIGH);
    // pause before next value:
    delay(encendido);
 }

 for (int i=MAXLED-2; i>0; i–) {
   leerDatos();
    // take the latchPin low so
    // the LEDs don’t change while you’re sending in bits:
    digitalWrite(latchPin, LOW);
    delay(apagado);
    // shift out the bits:
    shiftOut(dataPin, clockPin, MSBFIRST,led[i]);
    //take the latch pin high so the LEDs will light up:
    digitalWrite(latchPin, HIGH);
    // pause before next value:
    delay(encendido);
 }

}

 void leerDatos(){
  if (Serial.available()>0) {
    res=Serial.read();
    if (res==’e') {
      encendido = Serial.read();
    }
    else if (res==’a') {
      apagado = Serial.read();
    }
  
  }
}

Codigo fuente processing:

import processing.serial.*;
import controlP5.*;
//se crea una variable port de tipo serial 
//para despues establecer la conexion 
Serial port;
//se crea una variable cp5 
//para despues establecer el control slide
ControlP5 cp5;
//se crea una variable
int valor=0; 
int valor_anterior=-1;
void setup() {
  //tamanho  de la ventana
  size(600, 200);
  
  noStroke();  
  //se crea la instancia del port y se le mandan atributos importantes 
  port = new Serial(this, Serial.list()[1], 9600);
  //se modifican los controles
  cp5 = new ControlP5(this);
  cp5.addSlider(“e”)
    .setPosition(40, 40)
    .setWidth(500)
    .setHeight(20)
    .setRange(0, 255)
    .setValue(128)
    .setSliderMode(Slider.FLEXIBLE);
    
  cp5.addSlider(“a”)
    .setPosition(40, 140)
    .setWidth(500)
    .setHeight(20)
    .setRange(0, 255)
    .setValue(128)
    .setSliderMode(Slider.FLEXIBLE);
}
void draw() {
  //color del fondo
  background(100);
}
//metodo para el control de eventos
public void controlEvent(ControlEvent theEvent) {
 //valido la condicion
  if(“e” == theEvent.getController().getName())
  {
      //mando por el serial la ‘e’
      port.write(‘e’);      
  }
  else if (“a” == theEvent.getController().getName())
  {
      //mando por el serial la ‘a’
      port.write(‘a’);
  }
    
  valor = int(theEvent.getController().getValue());
    if (valor != valor_anterior)  
    { 
      port.write(valor);
      valor_anterior = valor;
    }
 
}

DIAGRAMA DEL LABORATORIO





ESQUEMA DEL LABORATORIO


















No hay comentarios:

Publicar un comentario