I want to design a board to light up 6 LEDs(like LED bar), based on Values of A 10K Ohm Potentiometer which I read from a power LED driver board, I have the code below :
#define F_CPU 16000000UL // 16 MHz clock

#include <avr/io.h>
#include <util/delay.h>

// Define potentiometer ADC channel (PA0 = ADC0)
#define potPin 0

// Define digital I/O pins for LEDs - changed to use PD1 to PD6
#define led1 PD1
#define led2 PD2
#define led3 PD3
#define led4 PD4
#define led5 PD5
#define led6 PD6

#define SAMPLES_TO_AVERAGE 10 // Number of samples to average for ADC

void adc_init()
{
  // Initialize ADC
  ADMUX = (1<<REFS0); // Select AVcc as reference voltage and ADC0 as input channel
  ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // Enable ADC and set prescaler to 128
}

uint16_t adc_read(uint8_t ch)
{
  // Select ADC channel with safety mask and without changing the reference voltage selection
  ADMUX = (ADMUX & 0xF0) | (ch & 0x0F);

  // Start single conversion
  ADCSRA |= (1<<ADSC);

  // Wait until conversion is complete
  while (ADCSRA & (1<<ADSC));

  return ADC;
}

uint16_t adc_read_average(uint8_t ch)
{
  uint32_t sum = 0;
  for (int i = 0; i < SAMPLES_TO_AVERAGE; ++i) {
    sum += adc_read(ch);
  }
  return (uint16_t)(sum / SAMPLES_TO_AVERAGE);
}

int main(void)
{
  // Set up the LED pins as output - updated for PD1 to PD6
  DDRD |= (1<<led1) | (1<<led2) | (1<<led3) | (1<<led4) | (1<<led5) | (1<<led6);
   
  // Initialize ADC
  adc_init();

  while(1)
  {
    // Read the value from the potentiometer and average it
    uint16_t potValue = adc_read_average(potPin);

    // Map the potentiometer value from the given range (65 - 337) to (0 - 1023)
    uint16_t mappedValue = (uint32_t)(potValue - 65) * 1023 / (337 - 65);

    // Define thresholds based on the number of LEDs
    uint16_t threshold1 = 170; // First threshold
    uint16_t threshold2 = 341; // Second threshold
    uint16_t threshold3 = 512; // Third threshold
    uint16_t threshold4 = 683; // Fourth threshold
    uint16_t threshold5 = 854; // Fifth threshold

    // Turn off all LEDs to start with - updated for PD1 to PD6
    PORTD &= ~((1<<led1) | (1<<led2) | (1<<led3) | (1<<led4) | (1<<led5) | (1<<led6));

    // Determine which LEDs to light up based on the mappedValue - updated for PD1 to PD6
    if (mappedValue >= threshold5) {
      PORTD |= (1<<led1) | (1<<led2) | (1<<led3) | (1<<led4) | (1<<led5) | (1<<led6);
    } else if (mappedValue >= threshold4) {
      PORTD |= (1<<led1) | (1<<led2) | (1<<led3) | (1<<led4) | (1<<led5);
    } else if (mappedValue >= threshold3) {
      PORTD |= (1<<led1) | (1<<led2) | (1<<led3) | (1<<led4);
    } else if (mappedValue >= threshold2) {
      PORTD |= (1<<led1) | (1<<led2) | (1<<led3);
    } else if (mappedValue >= threshold1) {
      PORTD |= (1<<led1) | (1<<led2);
    } else {
      // Ensure led1 is always turned on regardless of the value
      PORTD |= (1<<led1);
    }

    // Small delay to reduce flickering
    _delay_ms(30);
  }
}
when I turn the potentiometer to the maximum value, all the LEDs are turned on but when I reduce the value of the potentiometer all LEDs will be turned on and don't act as LED bars until I reach the minimum value of the potentiometer and then LED 1 will be turned on, it is important to consider I put a reset key in at mega, and when I push it , it reset the micro and every thing will work normally