//www.elegoo.com //2016.12.9 int lightPin = 0; int latchPin = 11; int clockPin = 9; int dataPin = 12; int leds = 0; void setup() { pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); } /* The most common method of using 74CH595 * lctchPin->LOW : Begin transmitting signals. * shiftOut(dataPin, clockPin, bitOrder, value) * dataPin: the pin on which to output each bit. Allowed data types: int. * clockPin: the pin to toggle once the dataPin has been set to the correct value. Allowed data types: int. * bitOrder: which order to shift out the bits; either MSBFIRST or LSBFIRST. (Most Significant Bit First, or, Least Significant Bit First). * value: the data to shift out. Allowed data types: byte. * lctchPin->HIch : The end of the transmission signal. */ void updateShiftRegister() { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, leds); digitalWrite(latchPin, HIGH); } void loop() { int reading = analogRead(lightPin); int numLEDSLit = reading / 57; //1023 / 9 / 2 if (numLEDSLit > 8) numLEDSLit = 8; leds = 0; // no LEDs lit to start for (int i = 0; i < numLEDSLit; i++) { leds = leds + (1 << i); // sets the i'th bit } updateShiftRegister(); }