This project refers to an Arduino sketch that implements a light indicator with the help of an external sensor (photoresistor) for the recognition of light (the sensor acts as input device for the Arduino), and a bar graph of many LEDs used as a rating indicator (the indicator functions as an output device for the Arduino).
In this project we use an 8-bit shift register (namely the 74HC595). This way we can drive 8 different LEDs in the output committing only three PINS of the Arduino.
If we want to drive more LEDs, we connect into a cascade form two or more (depending on the number of LEDs we want to support) shift registers and act accordingly.
For example, with this approach, if we wanted to drive 1024 LEDs, we would need only 3 PINS from the Arduino and some more 74HC595 in a cascade form. Otherwise, we should drive the 1024 LEDs with separate PINS from the Arduino, something which is of course impossible.
For more information you can get the project itself: