Étape 3: programme
// 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); }} }
Votre servo peut être différente de mon, si pour une raison quelconque, quelque chose ne fonctionne pas essayer de changer les valeurs sur des lignes 21 et 22.
Comme vous pouvez le voir ici, la position du servo est parfois exactement 500, parfois 499-501. Cela dépend de la qualité de boîte de vitesses et potentiomètre servo.
Vous pouvez également télécharger le fichier .ino :