Skip to content

Instantly share code, notes, and snippets.

@robotjoosen
Last active December 17, 2015 05:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robotjoosen/5559853 to your computer and use it in GitHub Desktop.
Save robotjoosen/5559853 to your computer and use it in GitHub Desktop.
Different ways of using a 75HC595 on an Arduino.
int SER_Pin = 9; //pin 14 on the 75HC595
int RCLK_Pin = 10; //pin 12 on the 75HC595
int SRCLK_Pin = 11; //pin 11 on the 75HC595
//How many of the shift registers - change this
#define number_of_74hc595s 2
//do not touch
#define numOfRegisterPins number_of_74hc595s * 8
boolean registers[numOfRegisterPins];
void setup(){
pinMode(SER_Pin, OUTPUT);
pinMode(RCLK_Pin, OUTPUT);
pinMode(SRCLK_Pin, OUTPUT);
//reset all register pins
clearRegisters();
writeRegisters();
}
//set all register pins to LOW
void clearRegisters(){
for(int i = numOfRegisterPins - 1; i >= 0; i--){
registers[i] = LOW;
}
}
//Set and display registers
//Only call AFTER all values are set how you would like (slow otherwise)
void writeRegisters(){
digitalWrite(RCLK_Pin, LOW);
for(int i = numOfRegisterPins - 1; i >= 0; i--){
digitalWrite(SRCLK_Pin, LOW);
int val = registers[i];
digitalWrite(SER_Pin, val);
digitalWrite(SRCLK_Pin, HIGH);
}
digitalWrite(RCLK_Pin, HIGH);
}
//set an individual pin HIGH or LOW
void setRegisterPin(int index, int value){
registers[index] = value;
}
void loop(){
for( int i=0; i<numOfRegisterPins;i++)
{
registers[i] = HIGH;
writeRegisters();
delay(100);
}
clearRegisters();
writeRegisters();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment