Hur man gör en DJ Barnyard! (6 / 9 steg)
Steg 6: Kretsen Schematisk och koden!
Fotot ovan är Fritzing kretsen Schematisk av den elektronik som används för att tillåta för den autonoma rörelsen av DJ lagårn. Den enda del som saknas i schematiskt är 9 V batterianslutningen till Arduino Uno. Som kan ses från schematiskt (och senare i koden), utlöser ultraljud sensorn servon att flytta i antingen framåt eller bakåt rotation via Arduino koden. Notera att det set av brödunderläggen endast för dess makt järnväg, därför en mycket liten skärbräda kan användas till denna inställning.
Är nedan koden jag använde för DJ Barnyard, det är fullt kommenterade och efter det kommer jag att skriva en kort beskrivning av dess funktionalitet:
/******************************************
SYFTE: DJ BarnYard kodSkapad av Chris Perilla
DATUM: 4/11/2014
*******************************************/
#define echoPin 4 / / Detta är echo pin
#define triggerPin 2 / / Detta är trigger pin
#include //Include servo biblioteket
Servo servoLeft; vänstra hjulet
Servo servoRight; höger hjul
/************************set-up function******************************************************************/ void setup() {
pinMode (echoPin, ingång); //set pinmodes
pinMode (triggerPin, produktionen);
servoLeft.attach(10); signal till vänster servo kommer från stift 10
servoRight.attach(9); signal till rätt servo kommer från stift 9
}
/*************************main loop************************************************************************/
void loop() {
servoLeft.write(105); kör på med fart att köra med samma hastighet som vilros servo
servoRight.write(0); kör med full fart i samma riktning
digitalWrite (triggerPin, hög); göra en 10usec puls
delayMicroseconds(10);
digitalWrite (triggerPin, låg);
int avstånd = pulseIn(echoPin,HIGH); nu läsa returnerar den puls som skickas tillbaka av sensor //pulseIn puls längd i usec
flyta distance1 = avstånd/58. startande i cm
om (distance1 < 25) {//if ett objekt har identifierats
servoLeft.write(90); båda motorerna stannar
servoRight.write(90);
Delay(1000); vänta en sekund
servoLeft.write(20); ange båda servon till full fart i motsatt riktning
servoRight.write(180);
Delay(1000); vänta ytterligare andra
servoLeft.write(180); då endast vänster servo till roterar så att DJBarnYard blir
Delay(1500); sedan kommer att det gå tillbaka och upprepa
}
}
Beskrivning:
För preliminära koden definierar jag de echo och utlösa stiften på sensorn och vänster och höger servon. Jag inkluderar servo biblioteket också.
Inom den ogiltiga setup jag in pin lägen för Arduino inklusive servon med hjälp av funktionen .attach servo finns i Servo biblioteket.
När det gäller avsnittet ogiltig loop börjar vi med koden talar om Arduino att ha servon rotera så att DJ lagårn är ett steg i riktning framåt. Det kan ses i den kommenterade delen att ett servo körs långsammare än andra, detta beror på att jag var med två olika märken av servon. Förhoppningsvis har du inte detta problem, som kommer att göra din kod lite mer konsekvent. Nästa, vi använder digitalWrite, delayMicroseconds och pulseIn för att skapa en 10 usec puls från ultrasonic sensor och pulsen som tas emot. Vi sedan konvertera puls längd till avståndet i cm. Den om uttalande börjar, om ett hinder är upptäckta 25 cm eller mindre bort följande kommer då att hända; båda motorerna kommer att sluta, omvänd, och ett hjul (servo) kommer att rotera för att vända DJ lagårn. Efter detta om uttalande är klar huvudloop upprepas. Så, om det finns något hinder inom 25 cm från DJ lagårn efter if uttalande då han kommer att gå framåt tills ett sådant hinder uppstår.