Stap 6: Circuit schema en code!
De foto hierboven is het circuit Fritzing schematische van de elektronica gebruikt om te voorzien in het autonome verkeer van DJ Barnyard. Het enige deel dat ontbreekt in het schema is de 9 V batterij verbinding met de Arduino Uno. Zoals kan worden gezien van het schema (en later in de code), hebben de ultrasone sensor zal leiden tot de servo's in voorwaartse of achterwaartse rotatie verplaatsen via de code van de Arduino. Merk op dat het breadboard alleen is nemen gebruikt voor haar macht spoor, dus een heel klein breadboard kan worden gebruikt voor deze installatie.
Hieronder is de code die ik voor DJ Barnyard gebruikte, het is volledig toegelicht en na het zal ik schrijf een korte beschrijving van de functionaliteit:
/******************************************
DOEL: DJ BarnYard codeGemaakt door Chris Perilla
DATUM: 4/11/2014
*******************************************/
#define echoPin 4 / / dit is de echo-pin
#define triggerPin 2 / / Dit is de trigger-pin
#include //Include de servo-bibliotheek
Servo servoLeft; linker wiel
Servo servoRight; juiste wiel
/************************set-up function******************************************************************/ void setup() {
pinMode (echoPin, INPUT); //set-pinmodes
pinMode (triggerPin, OUTPUT);
servoLeft.attach(10); signaal naar links servo komt van pin 10
servoRight.attach(9); signaal naar juiste servo komt van pin 9
}
/*************************main loop************************************************************************/
void loop {}
servoLeft.write(105); draaien op med snelheid te draaien op dezelfde snelheid als vilros servo
servoRight.write(0); draaien op volle snelheid in dezelfde richting
digitalWrite (triggerPin, hoge); maken van een 10usec-pulse
delayMicroseconds(10);
digitalWrite (triggerPin, laag);
int afstand = pulseIn(echoPin,HIGH); Lees nu geeft de puls die wordt verzonden door de sensor //pulseIn de lengte van de pols in usec
zweven distance1 = afstand/58; distnace in cm
Als (distance1 < 25) {//if een object wordt gedetecteerd
servoLeft.write(90); beide motoren stoppen
servoRight.write(90);
delay(1000); Wacht één seconde
servoLeft.write(20); beide servo's ingesteld op volle snelheid in de tegenovergestelde richting
servoRight.write(180);
delay(1000); wacht nog tweede
servoLeft.write(180); dan alleen de linker servo aan gedraaid zodat DJBarnYard draait
delay(1500); vervolgens zal lus terug en herhaal
}
}
Beschrijving van de code:
Voor de voorlopige code definiëren ik de echo en trigger pinnen van de sensor en de linker- en servo's. Ik ook de servo-bibliotheek ook.
Binnen de void setup ik de pin-modi instellen voor de Arduino met inbegrip van de servo's met behulp van de de .attach servo functie gevonden in de bibliotheek van de Servo.
Wat betreft de sectie ongeldig lus beginnen we met de code de Arduino te hebben van de servo's draaien dus dat DJ Barnyard in de voorwaartse richting is te vertellen. Het kan worden gezien in het commentaar gedeelte dat één servo draait langzamer dan de andere, dit is omdat ik was met behulp van twee verschillende merken van servo's. Hopelijk, heb je niet dit probleem, waardoor uw code een beetje meer consistent. Vervolgens gebruiken we digitalWrite, delayMicroseconds en pulseIn maken een 10 usec puls van de ultrasone sensor en de puls die wordt ontvangen. Wij vervolgens omzetten in de impulslengte afstand in cm. De als verklaring begint, als een obstakel gedetecteerd 25 cm wordt of minder weg dan het volgende gebeuren zal; beide motoren zal stoppen, omkeren, en één wiel (servo) zal draaien om te schakelen van DJ Barnyard. Na deze instelling als de verklaring is voltooid de hoofdlus zal herhalen. Dus, als er geen beletsel is binnen 25 cm van DJ Barnyard na de if-instructie dan hij zal vooruit totdat dergelijke obstakel ontstaat.