GOduino III - skärbräda-vänlig Arduino-baserad robot controller (5 / 6 steg)
Steg 5: GOduino III objekt undvikande robot
Jag är ett stort fan av att använda DVD-fodral som robot plattformar. Denna robot är var också monteras på mindre än en timme. Jag hade redan plattformen redo från en tidigare robot så allt jag hade att göra är att sätta in den GOduino III och sensorn i en kort skärbräda.
Jag använde Pololu's micro metal gear motor och HC-SR04 ultraljud avstånd sensorn. Det finns många kodexempel för HC-SR04 sensorn och ett bibliotek för Arduino som fungerar bra.
Detta är den kod som används i video demo:
GOduino III objekt undvikande med HC-SR04 avstånd sensorn
Denna kod är offentlig
#include < Goduino.h >
#include < Ultrasonic.h >
Välj stift för HC-SR04 avstånd sensor
#define TRIGGER_PIN 12
#define ECHO_PIN 13
#define DISRANCE_TO_OBJECT 1300 / / det var det optimala värdet för objektet detektering med trial & error
Ultraljuds ultraljud (TRIGGER_PIN, ECHO_PIN); HC-SR04 avstånd sensor objekt
Goduino myrobot; GUduino III motor objekt
int mspeed = 50; utgångshastighet värdet av båda motorer
void setup()
{
Serial.BEGIN(9600);
myrobot.motorSpeed (50, 50); ställa in utgångshastighet för båda motorer
}
void loop()
{
Serial.println("---");
flyta cmMsec = 0, inMsec = 0;
långa microsec = 0, avgDis = 0;
för (int jag = 0; jag < 10; i ++) {/ / genomsnittlig 10 avläsningar från avstånd sensor
microsec = ultrasonic.timing();
Serial.Print ("microsec:");
Serial.println(microsec);
avgDis += microsec;
}
avgDis = avgDis / 10;
Serial.Print ("avgDis:");
Serial.println(avgDis);
om (avgDis > DISRANCE_TO_OBJECT) {/ / om inga objekt inom intervallet
myrobot.motorForward(1); gå framåt
myrobot.motorForward(2);
}
annat / / men om objektet upptäcks inom spänna
{
myrobot.motorStop(1); Stanna
myrobot.motorStop(2); Stanna
Delay(500); Vänta
myrobot.motorBack(1); tillbaka
myrobot.motorBack(2); tillbaka
Delay(1000); Vänta
myrobot.motorBack(1); tur
myrobot.motorForward(2);
Delay(500); Vänta
myrobot.motorForward(1); Sedan gå framåt
myrobot.motorForward(2);
}
}