1000 steg Servo (3 / 4 steg)
Steg 3: Program
1000 steg Servo av TheSuperSewcio
#define pos 500 //servo position, använda 10-1010,
int avstånd; potentiometer kan ha problem med värden > 1010 eller < 10
void setup() {
Serial.BEGIN(9600);
pinMode (2, utgång);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
}
void loop() {
Serial.println(analogRead(1));
avståndet = analogRead(1) - pos;
om (avstånd < 0) {
avståndet = - avstånd;
}
IF(Distance == 0) {
digitalWrite (3, låg).
} annat {if(distance < 100) {//reduces hastighet 100 steg före mål
analogWrite (3, avstånd + 50); lägsta hastighet: 50
} annat {
digitalWrite (3, hög).
}}
IF(analogRead(1) > pos) {
digitalWrite (4, låg). Ställ in rotationsriktning
digitalWrite (2, hög).
} else{if(analogRead(1) == pos) {
digitalWrite (2, låg). stoppar motor
digitalWrite (4, låg).
} annat {
digitalWrite (2, låg).
digitalWrite (4, hög).
}}
}
Ditt servo kan vara annorlunda än min, om av någon anledning något inte fungerar prova att ändra värden i linje 21 och 22.
Som ni kan se här, är servo ståndpunkt ibland exakt 500, ibland 499-501. Det beror på servo växellåda och potentiometer kvalitet.
Du kan också hämta .ino filen: