I'm trying to control a 4-digit 7 segment display with an Arduino Nano, but I'm getting something wrong. I'm using the ICSP header to interface with a 74HC595 Shift Register which is then connected to the display. I've tested and retested the connections and everything seems to be alright, however the shift register doesn't have the desired output, and I notice it only shifs one single bit when I press the reset button on the arduino board.
74HC595 | A. Nano
DS <-----> MOSI (ICSP)
SH_CP <-----> SCK (ICSP)
ST_CP <-----> D6
MR <-----> 5V (ICSP)
OE <-----> GND (ICSP)
VDD <-----> 5V (ICSP)
GND <-----> GND (ICSP)
My code:
//pin connected to STCP
const int latchPin = 6;
//pin connected to SHCP
const int clockPin = 17;
//pin connected to DS (MOSI)
const int dataPin = 11;
byte val=0;
void setup() {
// put your setup code here, to run once:
//SPI pins are output
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);
pinMode(3,OUTPUT);
updateRegister(0);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(3,HIGH);
for (int i=0; i<8; i++) {
updateRegister();
delay(500);
}
}
void updateRegister() {
//pull latch low to write new bits to the register
digitalWrite(latchPin,LOW);
//shift out the data
shiftOut(dataPin,clockPin,LSBFIRST,val);
//pull latch pin high so that the leds light up
digitalWrite(latchPin,HIGH);
}