Stap 5: Stap 5 - nu tijd om te programma!
Dit is echt het leuke deel; de sky is the limit als het gaat om het programmeren van je J-Bot. U kunt de route naar de snoep kantoor machine of koffie pot te hebben van uw office-contactpersoon maken van een pick-up vooraf programmeren. Toevoegen van een web-cam to-peer rond hoge kast muren, toevoegen sprekers uitgezonden muziek, toevoegen van ledematen en een afstandsbediening te halen uw favoriete gadgets. J-Bot wacht voor uw verbeelding uit te voeren gewoon botty.
Eerst moet je de Arduino software te downloaden. Vervolgens de Arduino Stepper/Servo software library downloaden en volg de instructies op hoe te zetten van de bibliotheek in de desbetreffende map.
Vervolgens opent u de Arduino software en plak de code.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include < AFMotor.h > / / maakt de bibliotheek van de Motor
#include < Servo.h > / / maakt van de Servo-bibliotheek
Servo PingServo;
AF_DCMotor motor1(1); Motor 1 is aangesloten op de poort 1 op de motor schild
AF_DCMotor motor2(2); Motor 2 is aangesloten op de poort 2 van de motor shield
int minSafeDist = 11; Minimumafstand voor ping sensor te weten wanneer te schakelen
int pingPin = A0; Ping sensor is aangesloten op poort A0
int centerDist, leftDist, rightDist, backDist; Definiëren van de variabelen midden, links, rechts en terug van afstand
lange duur, inch, cm; Variabelen voor Ping sensor definiëren
VOID Setup {}
PingServo.attach(10); Servo is aangesloten op pin 10 in het motor schild
PingServo.write(90); Centreren van het Ping-sensor (zet het op 90 graden)
motor1.setSpeed(215); Hiermee stelt u de snelheid van de eerste motor (op 0, staan de motoren af 255 is de snelste instelling die je bent in staat om te gebruiken, ik gebruikt 215 aan de motoren niet te hard duwen.)
Motor2.setSpeed(215); Hiermee stelt u de snelheid van de tweede motor (op 0, staan de motoren af 255 is de snelste instelling die je bent in staat om te gebruiken, ik gebruikt 215 aan de motoren niet te hard duwen.)
Serial.begin(9600); Seriële monitor maakt voor foutopsporing
Serial.println ("Serial test!"); Test de seriële communicatie
}
VOID AllStop() {}
motor1.run(release); Motor 1 uitgeschakeld
Motor2.run(release); Motor 2 uitgeschakeld
}
VOID AllForward() {/ / maakt de robot voorwaarts gaan
motor1.run(forward); Motor 1 gaat vooruit
Motor2.run(forward); Motor 2 gaat vooruit
Serial.println ("Doorgaan"); Drukt een regel in de seriële monitor
}
VOID turnRight() {/ / maakt de robot ga rechtsaf
Motor2.run(BACKWARD); Motor 2 uitgeschakeld
motor1.run(forward); Motor 1 gaat vooruit
delay(1600); Benodigde tijd voor het rechtsaf (1,6 seconden)
Serial.println ("motoren gaan recht"); Drukt een regel in de seriële monitor
}
VOID GoBack() {/ / maakt de robot ga terug
Motor2.run(BACKWARD); Motor 2 gaat terug
motor1.run(BACKWARD); Motor 1 gaat terug
delay(1600); Tijd die nodig is om terug te gaan (1,6 seconden)
Serial.println("backward"); Drukt een regel in de seriële monitor
}
VOID turnLeft() {/ / maakt de robot ga links
Motor2.run(forward); Motor 2 gaat vooruit
motor1.run(BACKWARD); motor 1 uitgeschakeld
delay(1600); Benodigde tijd voor het schakelen van links (1.6) Seconds
Serial.println ("motoren gaan links"); / / drukt een regel in de seriële monitor
}
Begint de lus om te beslissen wat te doen
void loop
{
LookAhead();
Serial.Print(inches);
Serial.println ("duim"); Drukt een regel in de seriële monitor
Als (inch > = minSafeDist) / * als de inch vóór een object is groter dan of gelijk aan de minimale veiligheidsafstand (11 inch), reageren * /
{
AllForward(); Alle wielen toekomen
delay(110); 0.11 seconden
} else / / indien niet:
{
AllStop(); Stop alle motoren
LookAround(); Controleer uw omgeving voor de beste route
if(rightDist > leftDist) / / als de juiste afstand groter dan de linker afstand is, sla rechtsaf
{
turnRight();
} else if (leftDist > rightDist) / / als de linker afstand groter dan de juiste afstand is, linksaf
{
turnLeft();
} else if (leftDist & & rightDist < minSafeDist) / / als de linker- en afstand kleiner is dan de veilige min afstand (11 inch) Ga terug
{
GoBack();
}
}
}
unsigned long ping() {}
pinMode (pingPin, OUTPUT); Maken van de Pingpin voor de uitvoer van
digitalWrite (pingPin, laag); Stuur een lage puls
delayMicroseconds(2); Wacht twee microseconden
digitalWrite (pingPin, hoge); Stuur een hoge pols
delayMicroseconds(5); wacht 5 micro seconden
digitalWrite (pingPin, laag); Stuur een lage puls
pinMode(pingPin,INPUT); Schakel de Pingpin in te voeren
duur = pulseIn (pingPin, hoge); luisteren voor de echo
/ * Micro seconden omzetten in Inches
-------------------------------------*/
duim = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
}
lang microsecondsToInches (lange microseconden) / / tijd omgezet in een afstand
{
retourneren van microseconden / 74 / 2;
}
lang microsecondsToCentimeters (lange microseconden) / / tijd omgezet in een afstand
{
retourneren van microseconden / 29 / 2;
}
VOID LookAhead() {}
PingServo.write(90); / / hoek om te kijken uit
delay(175); 0.175 seconden
ping();
}
VOID LookAround() {}
PingServo.write(180); hoek van 180°
delay(320); 0.32 seconden
ping();
rightDist = inch; krijgen van de juiste afstand
PingServo.write(0); Kijk naar de overkant
delay(620); 0.62 seconden
ping();
leftDist = inch; krijgen van de linker afstand
PingServo.write(90); hoek van 90°
delay(275); 0,275 seconden
Drukt een regel in de seriële monitor
Serial.Print ("RightDist:");
Serial.println(rightDist);
Serial.Print ("LeftDist:");
Serial.println(leftDist);
Serial.Print ("CenterDist:");
Serial.println(centerDist);
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------