SN74HC595N Shift Register

RM 1.00
Datasheet : SN74HC595N

8-Bit Shift Registers With 3-State Output Registers


Shift Register with Arduino

Reference 1: Adafruit Website
Reference 2: oomlout.com
Reference 3: bildr.org



int SER_Pin = 8; //pin 14 on the 75HC595 int RCLK_Pin = 9; //pin 12 on the 75HC595 int SRCLK_Pin = 10; //pin 11 on the 75HC595 //How many of the shift registers - change this #define number_of_74hc595s 1 //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(){ setRegisterPin(2, HIGH); setRegisterPin(3, HIGH); setRegisterPin(4, LOW); setRegisterPin(5, HIGH); setRegisterPin(7, HIGH); writeRegisters(); //MUST BE CALLED TO DISPLAY CHANGES //Only call once after the values are set how you need. }