Stap 7: programmeren met de afstandssensor
het heeft een afstandssensor, en het kan reageren op dat
Ik wil u hoe bent u in staat om te programmeren dat door je eigen zaaien.
het is geschreven in c ++
het eerste wat dat je ziet is dit
#define trigPin 7 //toevoegen aan code
#define echoPin 6
#define leidde 13
#include < Servo.h >
nu wij de servo's zijn inclusief, geleid, en de afstandssensor tot de code. u hoeft niet te veranderen om het even wat op hier.
Daarna zie je dit;
Servo myservo1; naam geven
Servo myservo2;
Servo myservo3;
Servo myservo4;
Servo myservo5;
nu hebben wij al de 5 signalen (6 servo's) een naam (kan alles wat je wilt)
volgende;
VOID Setup {}
Serial.begin (9600);
pinMode (trigPin, OUTPUT); aanstluiting op arduino
pinMode (echoPin, INPUT);
pinMode led (, uitvoer);
myservo1.attach(3);
myservo2.attach(5);
myservo3.attach(9);
myservo4.attach(10);
myservo5.attach(11);
}
nu vertellen we de arduino aan welke pin de servo's en de afstandssensor zijn aangesloten, weer u niet moet aanraken dit
volgende;
VOID position1() {/ / positie 1
digitalWrite (led, hoog); LED gaat op
myservo2.writeMicroseconds(1300);
myservo3.writeMicroseconds(1300);
myservo4.writeMicroseconds(800);
myservo5.writeMicroseconds(1000);
}
Dit is iets u kunt wijzigen, maakte ik een positie en bel deze standpunt1. nu kan ik dit standpunt later in mijn code gebruiken.
Als u een andere beweging wilt, wijzigt u de getallen tussen de () aan iets tussen de 0 en 3000.
na;
VOID position2() {//positie 2
digitalWrite(led,LOW); LED gaat uit
myservo2.writeMicroseconds(1200);
myservo3.writeMicroseconds(1300);
myservo4.writeMicroseconds(1400);
myservo5.writeMicroseconds(2200);
}
Dit is hetzelfde als voorheen, alleen dit mijn position2, is nu u kan het standpunt gewijzigd en meer toevoegen als u wilt.
dan zie je dit;
void loop {}
lange duur, afstand;
digitalWrite (trigPin, laag);
delayMicroseconds(2);
digitalWrite (trigPin, hoge);
delayMicroseconds(10);
digitalWrite (trigPin, laag);
duur = pulseIn (echoPin, hoge);
afstand = (duur/2) / 29.1;
nu het begin van de echte code werkt, raak niet dit deel is dit gewoon iets de afstandssensor instellen.
en dan;
Als (afstand < = 30) {//do positie 1
position1();
}
else {}
position2(); doen van positie 2
}
Als (afstand < 10) {}
myservo5.writeMicroseconds(2200); openen van de klauw
}
else {}
myservo5.writeMicroseconds(1000); worden klauw
}
-------------------------------------------------------------------------------------
u kunt nu een beweging toevoegen aan een afstand. dat doe je op deze manier.
Als (afstand < = 30) {//you nu zeggen, als de afstand minder of 30 cm. hij naar standpunt1 gaat
position1(); de maai arm doet alles wat je tussen deze {brakeds}
}
else {/ / als de afstand groter dan 30 cm is het doet position2
standpunt (2) / / het nu doet alles wat je tussen tose brakeds {}
}
Nu kunt u advertentie dit whit elke afstand u wilt en laat hem doen wat u maar wilt.
de vrees dat een deel van de code.
Als (> 30 afstand || afstand < = 0) {}
Serial.println ("buiten het bereik"); buiten berijk, als het groter dan 30 van kleiner dan 0 is
}
else {}
Serial.Print(distance);
Serial.println ("cm"); afstand in cm
}
delay(500); wacht 0,5 seconde
}
u niet hoeft te veranderen hier niets, het enige zou dat u "cm" wijzigen in "inch" maar ik heb dat nog niet geprobeerd. dus ik weet nu niet of dat werkt geweldig.
Ik hoop dat je nu al begrijpen hoe kunt u uw één beweging tot op een afstand.
veel plezier met je robotarm