Paso 3: programa de
// 1000 steps Servo by TheSuperSewcio#define pos 500 //servo position, use 10 - 1010, int distance; //potentiometer may have trouble with values > 1010 or < 10void setup() { Serial.begin(9600); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); }void loop() { Serial.println(analogRead(1)); distance = analogRead(1) - pos; if(distance < 0){ distance = -distance; } if(distance == 0){ digitalWrite(3, LOW); }else{if(distance < 100){ //reduces speed 100 steps before target analogWrite(3, distance + 50); //minimum speed: 50 }else{ digitalWrite(3, HIGH); }} if(analogRead(1) > pos){ digitalWrite(4, LOW); //set direction of rotation digitalWrite(2, HIGH); }else{if(analogRead(1) == pos){ digitalWrite(2, LOW); //stops motor digitalWrite(4, LOW); }else{ digitalWrite(2, LOW); digitalWrite(4, HIGH); }} }
El servo puede ser diferente de mi, si por alguna razón algo no funciona intenta cambiar los valores en las líneas 21 y 22.
Como se puede ver aquí, servo posición es a veces exactamente 500, a veces 499-501. Depende de la calidad de caja de engranajes y potenciómetro de servo.
También puede descargar archivo .ino: