How do you plan to solve it?
#include <stdint.h>
/* PWM output pins for each LED */
#define PWM_LED1 3
#define PWM_LED2 5
#define PWM_LED3 6
#define PWM_LED4 9
#define PWM_LED5 10
/* Analog input pin for the potentiometer */
#define POT_PIN A0
/* Stores the potentiometer value scaled to 0–255 */
uint8_t pot_value = 0;
void setup()
{
/* Configure all LED pins as outputs so PWM can drive them */
pinMode(PWM_LED1, OUTPUT);
pinMode(PWM_LED2, OUTPUT);
pinMode(PWM_LED3, OUTPUT);
pinMode(PWM_LED4, OUTPUT);
pinMode(PWM_LED5, OUTPUT);
}
void loop()
{
/*
* Read the potentiometer:
* - analogRead() returns 0–1023 (10-bit ADC)
* - Right-shift by 2 divides by 4
* - Result is scaled to 0–255 to match PWM resolution
*/
pot_value = (analogRead(POT_PIN) >> 2);
/*
* LED 1 range:
* pot_value from 1 to 51
* Brightness is directly proportional to pot_value
*/
if ((pot_value >= 0) && (pot_value < 51)) {
analogWrite(PWM_LED1, (5 * pot_value));
}
/*
* LED 2 range:
* pot_value from 52 to 101
* Modulo (%) is used to create a local 0–50 range
* This value is then scaled to PWM range
*/
if ((pot_value >= 51) && (pot_value < 102)) {
analogWrite(PWM_LED2, (5 * (pot_value % 51)));
}
/*
* LED 3 range:
* pot_value from 103 to 152
* Modulo 102 attempts to reset brightness at the start of this segment
*/
if ((pot_value >=102) && (pot_value < 153)) {
analogWrite(PWM_LED3, (5 * (pot_value % 102)));
}
/*
* LED 4 range:
* pot_value from 154 to 203
* Modulo 153 is used to derive a local brightness value
*/
if ((pot_value >= 153) && (pot_value < 204)) {
analogWrite(PWM_LED4, (5 * (pot_value % 153)));
}
/*
* LED 5 range:
* pot_value from 205 to 254
* Modulo 204 is used to derive a local brightness value
*/
if ((pot_value >= 204) && (pot_value < 255)) {
analogWrite(PWM_LED5, (5 * (pot_value % 204)));
}
}
Add video of output (know more)
