Arduino powered RC tank (7 / 8 steg)
Steg 7: Att sätta allt ihop
Ladda upp den följande skissen:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Arduino powered RC tank av: Stanley Deakins
//
Detta är en grundläggande skiss för att driva en RC tank med hjälp av en Arduino och en seeedstudio ping sensor. Den använder en
Parallax ping sensor att navigera. Vänligen Känn dig fri att ändra denna skiss hur som helst du känner för. Detta är helt enkelt
precis tillräckligt för att få dig igång med projektet. Tack och njut.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Byggd ovanpå Ping exempelkod av Tom Igoe
Denna konstant ändras inte. Det är den pin-kod
av sensorns utgång:
CONST int pingPin = 7.
int pinI1 = 8; //define I1 gränssnitt
int pinI2 = 11. //define I2 gränssnitt
int speedpinA = 9; //enable motor A
int pinI3 = 12; //define I3 gränssnitt
int pinI4 = 13. //define I4 gränssnitt
int speedpinB = 10; //enable motor B
int spead = 127; //define spead av motor
void setup()
{
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedpinA,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
pinMode(speedpinB,OUTPUT);
}
void forward()
{
analogWrite (speedpinA, spead); //input en simulering värde ställa in hastigheten
analogWrite(speedpinB,spead);
digitalWrite (pinI4, hög), //turn DC Motor B flytta medurs
digitalWrite(pinI3,LOW);
digitalWrite (pinI2, låg); //turn DC Motor A flytta moturs
digitalWrite(pinI1,HIGH);
}
void backward() / /
{
analogWrite (speedpinA, spead); //input en simulering värde ställa in hastigheten
analogWrite(speedpinB,spead);
digitalWrite (pinI4, låg); //turn DC Motor B flytta moturs
digitalWrite(pinI3,HIGH);
digitalWrite (pinI2, hög), //turn DC Motor A flytta medurs
digitalWrite(pinI1,LOW);
}
void left() / /
{
analogWrite (speedpinA, spead); //input en simulering värde ställa in hastigheten
analogWrite(speedpinB,spead);
digitalWrite (pinI4, hög), //turn DC Motor B flytta medurs
digitalWrite(pinI3,LOW);
digitalWrite (pinI2, hög), //turn DC Motor A flytta medurs
digitalWrite(pinI1,LOW);
}
void right() / /
{
analogWrite (speedpinA, spead); //input en simulering värde ställa in hastigheten
analogWrite(speedpinB,spead);
digitalWrite (pinI4, låg); //turn DC Motor B flytta moturs
digitalWrite(pinI3,HIGH);
digitalWrite (pinI2, låg); //turn DC Motor A flytta medurs
digitalWrite(pinI1,HIGH);
}
Annullera stop() / /
{
digitalWrite(speedpinA,LOW); / / Unenble stift, att stoppa motorn. Detta bör göras till ivrig skadar motorn.
digitalWrite(speedpinB,LOW);
Delay(1000);
}
void loop()
{
fastställa variabler för varaktigheten av ping,
och avstånd resultatet i tum och centimeter:
lång varaktighet, tum, cm;
PING))) utlöses av en hög puls av 2 eller fler mikrosekunder.
Ge en kort låg puls förhand för att säkerställa en ren hög puls:
pinMode (pingPin, produktionen);
digitalWrite (pingPin, låg);
delayMicroseconds(2);
digitalWrite (pingPin, hög);
delayMicroseconds(5);
digitalWrite (pingPin, låg);
Samma PIN-koden används för att läsa signalen från PING))): en hög
puls vars längd är tid (i mikrosekunder) från den sändande
ping till mottagning av dess eko av ett objekt.
pinMode (pingPin, ingång);
längd = pulseIn (pingPin, hög);
konvertera tiden till ett avstånd
tum = microsecondsToInches(duration);
//
om objekt är mindre än 12 inches bort
roboten vänder och vänder sig till rätt
i 2 sekunder
//
om (inches < 8) {
bromsa drivmotorn och paus 1/10 sekund
Stop();
//
ställa in motors bakåt
//
Backward();
Delay(700);
Stop();
//
inställningen motorer att vända
//
Left();
Delay(1100);
Stop();
}
//
När ingenting är inom 8"
roboten enkelt drives framåt
//
annat {
//
Inställningen drivmotorn
//
Forward();
}
Delay(100);
}
lång microsecondsToInches(long microseconds)
{
Enligt Parallaxs datablad för PING))), det finns
73.746 mikrosekunder per tum (dvs. ljud resor på 1130 fot per
det andra). Detta ger vägsträcka som ping, utgående
och tillbaka, så vi delar med 2 att få distansera av hindret.
Se: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
återvända mikrosekunder / 74 / 2;
}