RC Car to Robot (18 / 20 steg)
Steg 18: Program
/*
RC bil till Robot konvertering
av Randy Sarafan
Används för att konvertera en RC bil till en robot som använder en PING sensor för att undvika hinder,
och en Arduino motor sköld för motorstyrning.
För mer information, se:
Byggd ovanpå Ping exempelkod av Tom Igoe
*/
Denna konstant ändras inte. Det är den pin-kod
av sensorns utgång:
CONST int pingPin = 7.
void setup() {
upprätta motor riktning växla pins
pinMode (12, OUTPUT); driva motor - hög = framåt och låg = bakåt
pinMode (13, OUTPUT); vända motor - hög = vänster och låg = höger
upprätta motor broms pins
pinMode (9, OUTPUT); broms (inaktivera) drivmotorn
pinMode (8, OUTPUT); broms (inaktivera) tur motorn
Vänd bromsen off för drivmotorn
digitalWrite (9, låg).
Vänd bromsen på för tur motor
digitalWrite 8, hög.
Uppsättningar initial hastighet av drivmotor
analogWrite (3, 200);
Uppsättningar inledande riktningen av drivmotor
digitalWrite 12, hög.
}
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 < 12) {
bromsa drivmotorn och paus 1/10 sekund
digitalWrite (9, hög).
Delay(100);
//
inställningen tur motor
//
stänga av bromsar för tur motor
digitalWrite 8, låg.
ställa in turn motor riktning
digitalWrite 13, hög.
Aktivera tur motor
analogWrite (11, 255);
//
inställningen drivmotorn
//
stänga av bromsar av drivmotor
digitalWrite (9, låg).
ställa in drivmotorn bakåt riktning
digitalWrite 12, låg.
Aktivera drivmotorn
analogWrite (3, 200);
backup i 2 sekunder
Delay(2000);
//
stoppa
//
bromsa både motorer
digitalWrite 8, hög.
digitalWrite (9, hög).
}
//
När ingenting är inom 12"
roboten enkelt drives framåt
//
annat {
//
Inställningen drivmotorn
//
ställa in enheten motor riktning framåt
digitalWrite 12, hög.
stänga av bromsar av drivmotor
digitalWrite (9, låg).
Aktivera drivmotorn
analogWrite (3, 200);
}
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;
}
För hjälp att komma igång med Arduino, kolla in introt till Arduino Instructable.