--- /dev/null
+/*
+ Shift Register Example
+ for 74HC595 shift register
+
+ This sketch turns reads serial input and uses it to set the pins
+ of a 74HC595 shift register.
+
+ Hardware:
+ * 74HC595 shift register attached to pins 8, 12, and 11 of the Arduino,
+ as detailed below.
+ * LEDs attached to each of the outputs of the shift register
+
+ Created 22 May 2009
+ Created 23 Mar 2010
+ by Tom Igoe
+
+ */
+
+//Pin connected to latch pin (ST_CP) of 74HC595
+const int latchPin = 8;
+//Pin connected to clock pin (SH_CP) of 74HC595
+const int clockPin = 12;
+////Pin connected to Data in (DS) of 74HC595
+const int dataPin = 11;
+
+void setup() {
+ //set pins to output because they are addressed in the main loop
+ pinMode(latchPin, OUTPUT);
+ pinMode(dataPin, OUTPUT);
+ pinMode(clockPin, OUTPUT);
+ Serial.begin(9600);
+ Serial.println("reset");
+}
+
+void loop() {
+ if (Serial.available() > 0) {
+ // ASCII '0' through '9' characters are
+ // represented by the values 48 through 57.
+ // so if the user types a number from 0 through 9 in ASCII,
+ // you can subtract 48 to get the actual value:
+ int bitToSet = Serial.read() - 48;
+
+ // write to the shift register with the correct bit set high:
+ registerWrite(bitToSet, HIGH);
+ }
+}
+
+// This method sends bits to the shift register:
+
+void registerWrite(int whichPin, int whichState) {
+// the bits you want to send
+ byte bitsToSend = 0;
+
+ // turn off the output so the pins don't light up
+ // while you're shifting bits:
+ digitalWrite(latchPin, LOW);
+
+ // turn on the next highest bit in bitsToSend:
+ bitWrite(bitsToSend, whichPin, whichState);
+
+ // shift the bits out:
+ shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend);
+
+ // turn on the output so the LEDs can light up:
+ digitalWrite(latchPin, HIGH);
+ delay(300);
+
+}
+