Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Ingeniera
Departamento de Ingeniera Elctrica
Contenido
I.
Introduccin.........................................................................................................2
II.
Materiales usados...............................................................................................2
Mtodo de control.........................................................................................3
B.
I.
Introduccin
II.
Materiales usados
III.
Espejo Infinito
A.
Mtodo de control
Se debe tener en consideracin que las entradas del arduino no son del
todo suficientes para la conexin de la totalidad de los LEDs utilizados, por lo que
se utilizan Shift Registers del tipo 74HC595 con el objetivo de lograr controlar 8
salidas por cada pin de arduino disponible. En este caso particular se requiere de
4 Shift Register para lograr el control de la totalidad de salidas.
B.
La figura que se pens de manera grupal fue un pentgono, por cada lado
de l se conectaron 6 LEDs. Se usaron 30 resistencias en serie a cada LED y
Q0
Q7
estas fueron conectadas a los pines de
a
del registro de
desplazamiento.
Se soldaron los 4 registros a una placa pre perforada, se conect cada pin
de ellos a sus respectivas tierras, Vcc y pines tales como el latch, el data y el
clock.
IV.
Fig. 1: Esquema de conexin entre los Shift-Register y el Arduino. Las conexiones entre los circuitos
integrados, las resistencias y los LEDs son mostrados en el siguiente diagrama.
Fig. 2: Esquema de conexin entre los Shift-Register y los lados del pentgono. Ntese que no se incluy la
conexin entre circuitos integrados, ya que se mostr anteriormente.
V.
Cdigo
La siguiente tabla muestra el cdigo para encender los LEDs, adems de algunos
efectos:
int latchPin=5;
int clockPin=4;
int dataPin=3;
int a;
int s;
int i;
int arrShift1[]={B00111111,B11000000,B00000000,B00000000,B00000000};
int arrShift2[]={B00000000,B00001111,B11110000,B00000000,B00000000};
int arrShift3[]={B00000000,B00000000,B00000011,B11111100,B00000000};
int arrShift4[]={B00000000,B00000000,B00000000,B00000000,B00111111};
int arrShift5[]={B00111111,B11111111,B11111111,B11111111,B11111111};
int arrShift6[]={B00000000,B00001111,B11111111,B11111111,B11111111};
int arrShift7[]={B00000000,B00000000,B00000011,B11111111,B11111111};
int arrShift8[]={B00000000,B00000000,B00000000,B00000000,B00111111};
int
arrShiftd[]={B00111111,B01111110,B11111100,B11111000,B11110000,B11100000,B110000
00,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B
00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B000
00000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B0000111
1,B00011111};
int
arrShiftc[]={B00000000,B00000000,B00000000,B00000001,B00000011,B00000111,B000
01111,B00011111,B00111111,B01111110,B11111100,B11111000,B11110000,B11100000,B1
1000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B0000
0000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B0000000
0,B00000000};
int
arrShiftb[]={B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00
8
int ArregloInterm1[]={0XAA,0XCC,0XF0};
int ArregloInterm2[]={0X55,0X33,0X0F};
int M=150; //corresponde a un delay
void setup() {
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);
}
void loop() {
efecto0();
efecto1();
efecto2();
efecto2();
efecto2();
efecto2();
efecto3();
efecto3();
efecto3();
efecto3();
9
shiftOut(dataPin,clockPin,MSBFIRST,15);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
digitalWrite(latchPin,HIGH);
digitalWrite(latchPin,LOW);
delay(200);
shiftOut(dataPin,clockPin,MSBFIRST,31);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
digitalWrite(latchPin,HIGH);
digitalWrite(latchPin,LOW);
delay(200);
shiftOut(dataPin,clockPin,MSBFIRST,63);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
digitalWrite(latchPin,HIGH);
digitalWrite(latchPin,LOW);
delay(200);
shiftOut(dataPin,clockPin,MSBFIRST,127);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
digitalWrite(latchPin,HIGH);
digitalWrite(latchPin,LOW);
delay(200);
shiftOut(dataPin,clockPin,MSBFIRST,255);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
digitalWrite(latchPin,HIGH);
digitalWrite(latchPin,LOW);
11
16
void efecto1(){
s=150
for(int i=0 ;i<5 ;i++) // disminuir el delay de 50 en 50 .
{
a=1; // de aca en adelante para que un led encendido recorra todo el pentagono.
digitalWrite(latchPin,LOW);
for(int i=0 ;i<8 ;i++)
{
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
shiftOut(dataPin,clockPin,MSBFIRST,a);
digitalWrite(latchPin,HIGH);
delay(s);
digitalWrite(latchPin,LOW);
a=2*a;
}
a=1;
for(int i=0 ;i<8 ;i++)
{
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
shiftOut(dataPin,clockPin,MSBFIRST,a);
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
digitalWrite(latchPin,HIGH);
delay(s);
digitalWrite(latchPin,LOW);
a=2*a;
}
a=1;
for(int i=0 ;i<8 ;i++)
17
{
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
shiftOut(dataPin,clockPin,MSBFIRST,a);
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
digitalWrite(latchPin,HIGH);
delay(s);
digitalWrite(latchPin,LOW);
a=2*a;
}
a=1;
for(int i=0 ;i<6 ;i++) // este llega hasta 6 porque quedan 2 patitas de este shift sin
usar.
{
shiftOut(dataPin,clockPin,MSBFIRST,a);
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
shiftOut(dataPin,clockPin,MSBFIRST,B00000000);
digitalWrite(latchPin,HIGH);
delay(s);
digitalWrite(latchPin,LOW);
a=2*a;
}
s=s-25;
}
}
void efecto2(){
int delay1=250;
for(int i=0 ;i<5 ;i++) // disminuir el delay de 25 en 25 .
{
shiftOut(dataPin,clockPin,MSBFIRST,arrShift4[i]);
18
shiftOut(dataPin,clockPin,MSBFIRST,arrShift8[i]);
shiftOut(dataPin,clockPin,MSBFIRST,arrShift7[i]);
shiftOut(dataPin,clockPin,MSBFIRST,arrShift6[i]);
shiftOut(dataPin,clockPin,MSBFIRST,arrShift5[i]);
digitalWrite(latchPin,HIGH);
delay(250);
digitalWrite(latchPin,LOW);
}
}
void efecto4(){
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
shiftOut(dataPin,clockPin,MSBFIRST,0);
digitalWrite(latchPin,HIGH);
digitalWrite(latchPin,LOW);
delay(200);
19
shiftOut(dataPin,clockPin,MSBFIRST,255);
shiftOut(dataPin,clockPin,MSBFIRST,255);
shiftOut(dataPin,clockPin,MSBFIRST,255);
shiftOut(dataPin,clockPin,MSBFIRST,255);
digitalWrite(latchPin,HIGH);
digitalWrite(latchPin,LOW);
delay(200);
}
void efecto5(){
}
}
void efecto6(){
for(int e=0 ;e<3 ;e++){
for(int i=0 ;i<8 ;i++){
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,MSBFIRST,ArregloInterm1[e]);
shiftOut(dataPin,clockPin,MSBFIRST,ArregloInterm1[e]);
shiftOut(dataPin,clockPin,MSBFIRST,ArregloInterm1[e]);
shiftOut(dataPin,clockPin,MSBFIRST,ArregloInterm1[e]);
digitalWrite(latchPin,HIGH);
delay(M);
20
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,MSBFIRST,ArregloInterm2[e]);
shiftOut(dataPin,clockPin,MSBFIRST,ArregloInterm2[e]);
shiftOut(dataPin,clockPin,MSBFIRST,ArregloInterm2[e]);
shiftOut(dataPin,clockPin,MSBFIRST,ArregloInterm2[e]);
digitalWrite(latchPin,HIGH);
delay(M);
}
}
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,MSBFIRST,0Xff);
shiftOut(dataPin,clockPin,MSBFIRST,0Xff);
shiftOut(dataPin,clockPin,MSBFIRST,0Xff);
shiftOut(dataPin,clockPin,MSBFIRST,0Xff);
digitalWrite(latchPin,HIGH);
delay(1000);
}
VI.
Conclusiones.
21
VII.
Bibliografa.
https://www.arduino.cc/en/Tutorial/ShiftOut
22