#define DATA_PIN 8 // Pin connected to DS of 74HC595
#define LATCH_PIN 9 // Pin connected to STCP of 74HC595
#define CLOCK_PIN 10 // Pin connected to SHCP of 74HC595
uint16_t bitsToSend = 0x0001;
void setup()
{
pinMode(DATA_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
}
void loop()
{
if(bitsToSend == 0)
{
bitsToSend = 1;
}
digitalWrite(LATCH_PIN, LOW);
shiftOut16(DATA_PIN, CLOCK_PIN, LSBFIRST, bitsToSend);
digitalWrite(LATCH_PIN, HIGH);
bitsToSend <<= 1;
delay(1000);
}
void shiftOut16(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint16_t val)
{
uint8_t i;
for (i = 0; i < 16; i++)
{
if (bitOrder == LSBFIRST)
{
digitalWrite(dataPin, val & 1);
val >>= 1;
}
else
{
digitalWrite(dataPin, (val & 128) != 0);
val <<= 1;
}
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}
}