Skip to content

Instantly share code, notes, and snippets.

@vortec
Created June 23, 2014 18:29
Show Gist options
  • Select an option

  • Save vortec/0170ace9f33df201f413 to your computer and use it in GitHub Desktop.

Select an option

Save vortec/0170ace9f33df201f413 to your computer and use it in GitHub Desktop.
int pin_data = 13;
int pin_latch = 12;
int pin_clock = 11;
int shift_register[8];
void setup() {
pinMode(pin_data, OUTPUT);
pinMode(pin_latch, OUTPUT);
pinMode(pin_clock, OUTPUT);
pinMode(7, OUTPUT);
Serial.begin(9600);
resetShiftRegister();
}
void loop() {
digitalMultiWrite(15, 1);
digitalMultiWrite(7, 0);
delay(1000);
digitalMultiWrite(15, 0);
digitalMultiWrite(7, 1);
delay(1000);
}
void digitalMultiWrite(int pin, int voltage) {
if (pin <= 13) {
digitalWrite(pin, voltage);
} else {
int shift_pin = pin - 14;
Serial.println(shift_pin);
shift_register[shift_pin] = voltage;
sendShiftRegister();
}
}
void resetShiftRegister() {
for (int i = 0; i<8; i++) {
shift_register[i] = 0;
}
}
void sendShiftRegister() {
int value = shift_register[0] +
shift_register[1] * 2 +
shift_register[2] * 4 +
shift_register[3] * 8 +
shift_register[4] * 16 +
shift_register[5] * 32 +
shift_register[6] * 64 +
shift_register[7] * 128;
digitalWrite(pin_latch, LOW);
shiftOut(pin_data, pin_clock, MSBFIRST, value);
digitalWrite(pin_latch, HIGH);
Serial.println(value);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment