Stap 6: Arduino Code
Allereerst moet u naar het midden van uw continue rotatie servo's. Door te centreren hen, bedoel ik om ze te stoppen spinnen vrij de allertijden. Typ de onderstaande code en deze uploaden naar je arduino. Nu twee dingen gaan gebeuren. Ofwel de servo's zal niet draaien, wat betekent dat ze al zijn gecentreerd, of ze op sommige snelheid draaien zullen. Als ze draaien dan moet je iets doen. Continu servo's hebben een schroef in de zijkant waar hun kabels zijn. Neem de schroevendraaier en terwijl de servo schroef draait of draai de schroef een beetje totdat de servo stopt. Dit is hoe u ze centreren. De rem (midden) op 90, volgas links 0 en rechts volgas is 180.
#include
Servo leftMotor;
Servo rightMotor;
VOID Setup {}
rightMotor.attach(11);
leftMotor.attach(10);
}
void loop {}
rightMotor.write(90);
leftMotor.write(90);
}
Nu bent u klaar om uw arduino robot te programmeren! Krijgen die code en deze uploaden naar uw Arrduino!! Hopelijk gaat alles perfect werken!!
#include //include servo bibliotheek
#define trigPin 7 //the trig pin van afstandssensor
#define echoPin 4 //the echo pin van afstandssensor
Const int RForward = 120; de snelheid van de servo, maximumsnelheid is 180
Const int RBackward = 60;
Const int LForward = 60;
Const int LBackward = 120;
Const int RNeutral = 90; gecentreerd positie
Const int LNeutral = 90;
Const int RightLightSensor = 0; verklaren van de analoge pinnen voor de photoresistors
Const int LeftLightSensor = 2;
Const int collisionThresh = 15; drempel voor obstakels (in cm)
int SensorLeft;
int SensorRight;
int SensorDifference;
int leftDistance, rightDistance; afstanden aan weerszijden
Servo panMotor; Micro servo met de afstandssensor op het
Servo leftMotor; verklaren van motoren
Servo rightMotor;
lange duur; de tijd het neemt om te ontvangen van PING))) signaal
VOID Setup {}
rightMotor.attach(11); motoren koppelen aan de juiste pinnen
leftMotor.attach(10);
panMotor.attach(6);
panMotor.write(90); centreren van de pan-servo
pinMode (trigPin, OUTPUT);
pinMode (echoPin, INPUT);
pinMode (LeftLightSensor, INPUT);
pinMode (RightLightSensor, INPUT);
}
void loop {}
int afstand = ping(); Bel de ping-functie om de afstand voor de robot
SensorLeft = 1023 - analogRead(LeftLightSensor); Lees de photoresistors
delay(1);
SensorRight = 1023 - analogRead(RightLightSensor);
delay(1);
SensorDifference = abs (SensorLeft - SensorRight);
Als (afstand > collisionThresh) //if pad is duidelijk van het licht worden geleid.
{
Als (SensorLeft > SensorRight & & SensorDifference > 75) {//left
leftMotor.write(LBackward);
rightMotor.write(RForward);
delay(250);
}
Als (SensorLeft < SensorRight & & SensorDifference > 75) {//right
leftMotor.write(LForward);
rightMotor.write(RBackward);
delay(250);
}
else if (SensorDifference < 75) {//forward
leftMotor.write(LForward);
rightMotor.write(RForward);
delay(500);
}
}
anders //if pad is geblokkeerd {}
leftMotor.write(LNeutral);
rightMotor.write(RNeutral);
panMotor.write(0);
delay(500);
rightDistance = ping(); scannen naar rechts
delay(500);
panMotor.write(180);
delay(700);
leftDistance = ping(); scannen naar links
delay(500);
panMotor.write(90); terug naar centrum
delay(100);
compareDistance();
}
}
ongeldig compareDistance() {}
Als (leftDistance > rightDistance) //if links minder wordt belemmerd
{
leftMotor.write(LBackward);
rightMotor.write(RForward); Sla linksaf
delay(500);
}
anders als (rightDistance > leftDistance) //if recht minder wordt belemmerd
{
leftMotor.write(LForward);
rightMotor.write(RBackward); Sla rechtsaf
delay(500);
}
anders //if die ze even zijn geblokkeerd
{
leftMotor.write(LForward);
rightMotor.write(RForward); 180 graden draaien
delay(1000);
}
}
lange ping() {/ / afgeven van PING))) puls signaal
digitalWrite (trigPin, laag);
delayMicroseconds(2);
digitalWrite (trigPin, hoge);
delayMicroseconds(5);
digitalWrite (trigPin, laag);
Krijgen van de duur die nodig is om te ontvangen van echo
duur = pulseIn (echoPin, hoge);
Duur converteren naar afstand
retourneren van duur / 29 / 2;
}