/* LED bar graph: Richard 07/16/2024
Turns on a series of LEDs based on the value of an analog sensor.
you can use any number by changing the LED count and the pins in the
array. can be used to control any series of digital outputs that depends
on an analog input.
The circuit: LEDs from pins 2 through 11 to ground
https://www.arduino.cc/en/Tutorial/BuiltInExamples/BarGraph
*/
// pot input reading and number of leds being used
const int analogPin = A0;
const int ledCount = 10;
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
void setup() {
// iterate the pin array and set to output
for (int current = 0; current < ledCount; current++) {
pinMode(ledPins[current], OUTPUT);
}
}
void loop() {
// read the potentiometer
int sensorReading = analogRead(analogPin);
// map the result to a range from 0 to the number of LEDs
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
// loop over the LED array
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
// if the array element's index is less than ledLevel,
// turn the pin for this element on
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}
// turn off all pins higher than the ledLevel
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
}