const byte PIN_LED = 3;
const byte PIN_POTENC = A0;

struct LED{
  byte pin;
  int estado;
};

struct SENSOR{
  byte pin;
  int estado;
  struct LED &led = led;
};

struct LED led;
struct SENSOR sensor;

void setup_led(struct LED &led, byte pin){
  pinMode(pin, OUTPUT);
  led.pin = pin;
  led.estado = LOW;
}

void setup_sensor(struct SENSOR &sensor, byte pin, struct LED &led){
  pinMode(pin, INPUT);
  sensor.pin = pin;
  sensor.estado = LOW;
  sensor.led = led;
}

void update_led(struct LED &led, byte value){
  led.estado = value;
  analogWrite(led.pin, led.estado);
}

void check_sensor(struct SENSOR &sensor){
  int value = analogRead(sensor.pin);
  if(sensor.estado != value){
    sensor.estado = value;
    update_led(sensor.led, sensor.estado*256/1024);
  }
}

void setup() {
  setup_led(led, PIN_LED);
  setup_sensor(sensor, PIN_POTENC, led);
}

void loop() {
  check_sensor(sensor);
}
$abcdeabcde151015202530fghijfghij