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};
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);
}
//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
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]);
// count from 0 to 255 and display the number
// on the LEDs
for (int i=0; i
// 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]);
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();
}
}
}
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.*;
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;
//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);
}
//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);
}
//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;
}
}
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;
}
}
No hay comentarios:
Publicar un comentario