Stap 7: Zet het allemaal samen
Upload het volgende schema:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Arduino aangedreven RC tank door: Stanley Deakins
//
Dit is een eenvoudige schets gebruikt voor het aandrijven van een RC tank met behulp van een Arduino en een seeedstudio ping sensor. Het maakt gebruik van een
Parallax ping sensor om te navigeren. Gelieve voel je vrij om het wijzigen van deze schets hoe dan ook u zin. Dit is gewoon
net genoeg om u aan het project begon. Dank en geniet van.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Gebouwd bovenop Ping voorbeeldcode door Tom Igoe
Deze constante verandert niet. Het is het pin-nummer
van de sensor van de output:
Const int pingPin = 7;
int pinI1 = 8; //define I1 interface
int pinI2 = 11; //define I2 interface
int speedpinA = 9; //enable motor A
int pinI3 = 12; //define I3 interface
int pinI4 = 13; //define I4 interface
int speedpinB = 10; //enable motor B
int spead = 127; //define de spead van motor
VOID Setup
{
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedpinA,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
pinMode(speedpinB,OUTPUT);
}
VOID vooruit()
{
analogWrite (speedpinA, spead); //input een simulatie-waarde om de snelheid
analogWrite(speedpinB,spead);
digitalWrite (pinI4, hoge); //turn DC Motor B beweging met de klok mee
digitalWrite(pinI3,LOW);
digitalWrite (pinI2, laag); //turn DC Motor A beweging linksom
digitalWrite(pinI1,HIGH);
}
VOID backward() / /
{
analogWrite (speedpinA, spead); //input een simulatie-waarde om de snelheid
analogWrite(speedpinB,spead);
digitalWrite (pinI4, laag); //turn DC Motor B beweging linksom
digitalWrite(pinI3,HIGH);
digitalWrite (pinI2, hoge); //turn DC Motor A beweging met de klok mee
digitalWrite(pinI1,LOW);
}
VOID datumwaarde / /
{
analogWrite (speedpinA, spead); //input een simulatie-waarde om de snelheid
analogWrite(speedpinB,spead);
digitalWrite (pinI4, hoge); //turn DC Motor B beweging met de klok mee
digitalWrite(pinI3,LOW);
digitalWrite (pinI2, hoge); //turn DC Motor A beweging met de klok mee
digitalWrite(pinI1,LOW);
}
VOID rechts() / /
{
analogWrite (speedpinA, spead); //input een simulatie-waarde om de snelheid
analogWrite(speedpinB,spead);
digitalWrite (pinI4, laag); //turn DC Motor B beweging linksom
digitalWrite(pinI3,HIGH);
digitalWrite (pinI2, laag); //turn DC Motor A beweging met de klok mee
digitalWrite(pinI1,HIGH);
}
VOID stop() / /
{
digitalWrite(speedpinA,LOW); / / Unenble de pin, om te stoppen met de motor. Dit moet worden gedaan om fervent beschadiging van de motor.
digitalWrite(speedpinB,LOW);
delay(1000);
}
void loop
{
stellen variabelen voor de duur van de ping,
en het resultaat van de afstand in inches en centimeters:
lange duur, inch, cm;
De PING))) wordt geactiveerd door een hoge pols van 2 of meer microseconden.
Geef een korte lage puls vooraf om een schoon hoog puls:
pinMode (pingPin, OUTPUT);
digitalWrite (pingPin, laag);
delayMicroseconds(2);
digitalWrite (pingPin, hoge);
delayMicroseconds(5);
digitalWrite (pingPin, laag);
Dezelfde pincode wordt gebruikt voor het lezen van het signaal van de PING))): een hoog
Pulse waarvan de duur de tijd (in microseconden) van de verzending is
voor de ping naar de receptie van de echo off van een object.
pinMode (pingPin, INPUT);
duur = pulseIn (pingPin, hoge);
de tijd omzetten in een afstand
duim = microsecondsToInches(duration);
//
Als objecten zijn minder dan 12 inch weg
de robot draait en draait naar rechts
gedurende 2 seconden
//
Als (inch < 8) {}
rem aandrijfmotor en 1/10 seconde pauzeren
Stop();
//
instellen van de motoren terug
//
backward();
delay(700);
Stop();
//
motoren van de instelling om te schakelen
//
datumwaarde;
delay(1100);
Stop();
}
//
Wanneer niets is binnen 8"
de robot rijdt gewoon vooruit
//
else {}
//
Aandrijfmotor van de instelling
//
vooruit();
}
delay(100);
}
lange microsecondsToInches(long microseconds)
{
Volgens de Parallax gegevensblad voor de PING))), er zijn
73.746 microseconden per inch (dwz geluid reist aan 1130 voeten per
seconde). Dit geeft de afstand die is afgelegd door de ping, uitgaande
en terug te keren, zodat wij door 2 delen te krijgen van de afstand van het obstakel.
Zie: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
retourneren van microseconden / 74 / 2;
}