Stap 3: programma
// 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); }} }
Uw servo kan afwijken van mijn, als om wat voor reden niet, iets werkt proberen te veranderen van waarden in lijnen 21 en 22.
Zoals u hier zien kunt, is servo positie soms precies 500, soms 499-501. Het hangt af van de versnellingsbak en potentiometer kwaliteit servo.
U kunt ook Ino bestand downloaden: