Professional Documents
Culture Documents
El circuito
A partir del ejemplo anterior, debe colocar un segundo registro de desplazamiento en la placa. Debe
tener los mismos cables de alimentación y tierra.
int latchPin = 8;
void setup() {
Serial.begin(9600);
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
void loop() {
//count up routine
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, 0);
digitalWrite(latchPin, 1);
delay(1000);
int i=0;
int pinState;
pinMode(myClockPin, OUTPUT);
pinMode(myDataPin, OUTPUT);
digitalWrite(myDataPin, 0);
digitalWrite(myClockPin, 0);
digitalWrite(myClockPin, 0);
pinState= 1;
else {
pinState= 0;
digitalWrite(myDataPin, pinState);
digitalWrite(myClockPin, 1);
digitalWrite(myDataPin, 0);
//stop shifting
digitalWrite(myClockPin, 0);
}
2. Conecte los 2 registros.
Dos de estas conexiones simplemente extienden la misma señal de reloj y pestillo desde el Arduino al
segundo registro de desplazamiento (cables amarillo y verde). El cable azul va desde el pin de salida
en serie (pin 9) del primer registro de desplazamiento a la entrada de datos en serie (pin 14) del
segundo registro.
int latchPin = 8;
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
void loop() {
blinkAll_2Bytes(1,500);
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, 0);
//red LEDs
lightShiftPinA(7-j);
//green LEDs
lightShiftPinA(j);
digitalWrite(latchPin, 1);
delay(1000);
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, 0);
//red LEDs
lightShiftPinB(j);
//green LEDs
lightShiftPinB(7-j);
delay(1000);
void lightShiftPinA(int p) {
int pin;
pin = 1<< p;
void lightShiftPinB(int p) {
int pin;
pin = 1;
pin = pin * 2;
int i=0;
int pinState;
pinMode(myClockPin, OUTPUT);
pinMode(myDataPin, OUTPUT);
digitalWrite(myDataPin, 0);
digitalWrite(myClockPin, 0);
digitalWrite(myClockPin, 0);
pinState= 1;
else {
pinState= 0;
digitalWrite(myDataPin, pinState);
digitalWrite(myClockPin, 1);
//zero the data pin after shift to prevent bleed through
digitalWrite(myDataPin, 0);
//stop shifting
digitalWrite(myClockPin, 0);
digitalWrite(latchPin, 0);
digitalWrite(latchPin, 1);
delay(200);
digitalWrite(latchPin, 0);
digitalWrite(latchPin, 1);
delay(d);
digitalWrite(latchPin, 0);
digitalWrite(latchPin, 1);
delay(d);
}
3. Agregue un segundo conjunto de LED.
En este caso, agregué los verdes para que al leer el código, quede claro qué byte va a qué conjunto
de LED
int latchPin = 8;
byte dataRED;
byte dataGREEN;
byte dataArrayRED[10];
byte dataArrayGREEN[10];
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
Serial.begin(9600);
//Arduino doesn't seem to have a way to write binary straight into the code
//so these values are in HEX. Decimal would have been fine, too.
//Arduino doesn't seem to have a way to write binary straight into the code
//so these values are in HEX. Decimal would have been fine, too.
blinkAll_2Bytes(2,500);
void loop() {
dataRED = dataArrayRED[j];
dataGREEN = dataArrayGREEN[j];
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, 0);
digitalWrite(latchPin, 1);
delay(300);
int i=0;
int pinState;
pinMode(myClockPin, OUTPUT);
pinMode(myDataPin, OUTPUT);
digitalWrite(myDataPin, 0);
digitalWrite(myClockPin, 0);
digitalWrite(myClockPin, 0);
pinState= 1;
else {
pinState= 0;
digitalWrite(myDataPin, pinState);
digitalWrite(myClockPin, 1);
digitalWrite(myDataPin, 0);
//stop shifting
digitalWrite(myClockPin, 0);
//blinks the whole register based on the number of times you want to
digitalWrite(latchPin, 1);
delay(200);
digitalWrite(latchPin, 0);
digitalWrite(latchPin, 1);
delay(d);
digitalWrite(latchPin, 0);
digitalWrite(latchPin, 1);
delay(d);