Código
//Asignación de pines y declaración de variables
int sensorPin = A0; //Pin para lectura analógicaint Pin2 = 9; //Pin para PWM 1
int Pin1 = 10; //Pin para PWM 2float e=0; //errorfloat e0=0; //error pasad0float pd=0; //variable de controlfloat d=0; //Diferencia entre error y error pasadofloat val=0; //Valor analógico leído
void setup() { // declare the ledPin as an OUTPUT: pinMode(Pin1, OUTPUT); //PIN1 salida PWM pinMode(Pin2, OUTPUT); //PIN2 salida PWM}void loop() { val = analogRead(sensorPin); //lee entrada del sensor e=val-455; //error= valor leído menos referencia d=e-e0; //diferenciación discreta e0=e; //error pasado //control pd= (43*e) + (25*d); // constantes multiplicando a e y a d pd = constrain(pd, -255, 255); //Limitar pd //Condiciones de posición if (pd>0) { analogWrite(Pin1, pd);//activar pin1 analogWrite(Pin2, 0); //desactivar pin2 } if (pd<0) { analogWrite(Pin2, abs(pd));//activar pin2 analogWrite(Pin1, 0); //Descativar pin1 } }