]> git.piffa.net Git - sketchbook_andrea/blobdiff - hardware/shift_register/shift_register_serial/shift_register_serial.ino
clean up
[sketchbook_andrea] / hardware / shift_register / shift_register_serial / shift_register_serial.ino
diff --git a/hardware/shift_register/shift_register_serial/shift_register_serial.ino b/hardware/shift_register/shift_register_serial/shift_register_serial.ino
new file mode 100644 (file)
index 0000000..38b5d7c
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+  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);
+
+}
+