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);
}