Stap 3: Code
De code die ik verstrekt zorgt voor de verandering van de drempel van de afstand. Dus met andere woorden, hoe ver de sensoren kunnen zien. Ik zal worden het uploaden van een nieuwe instructable snel om te laten zien hoe kunt u de sensoren nog nauwkeuriger met behulp van een temperatuursensor. Tot slot, mijn vriend liet me een leuke manier van debuggen echt snel. Alles wat je doen is gebruik een Boolean-waarde en sommige als verklaringen. Als de boolean true, dan seriële communicatie zal op en communiceren. De boolean is false, zal dan het programma veel sneller worden uitgevoerd maar niet communiceren.
Ik zal de Ino bestand bijvoegen, anders kunt u het kopiëren vanaf hier:
/*************************************************************************************************
**************************************************************************************************
Beweging volgen gemaakt door Calvin Kielas-Jensen
Controleer met een Arduino UNO Instructables.com voor het schakeldiagram.
Dit script kan twee bereik van de ultrasone sensoren te volgen van beweging terwijl gemonteerd op de bovenkant van een servo. De afstand drempel kan worden gewijzigd maar moet niet instellen ook zover de sensoren beginnen zal te mislukken.
Iedereen is welkom om te gebruiken en deze code wijzigen zolang ik krediet gegeven ben. Dank u voor het respecteren van de open source-beweging!
************************************************************************************************** *************************************************************************************************/
#include
Servo myservo;
Const int Lin = 10, Rin = 12, Lout = 11, aftocht = 13, serv = 9; instelling sensor pinnen en servo pin
stellen variabelen voor duur / / en de afstand die resulteren in inch lange Rduration, Lduration, Rinches, trouwfeesten;
int drempel = 10; Sensor drempel in inch
int hoek = 80; Eerste hoek
Booleaanse debug = false; Seriële communicatie voor debugging. Is ingesteld op true voor seriële communicatie.
void setup {/ / seriële communicatiepoorten te initialiseren: als (debug) {Serial.begin(9600)}; myservo.attach(9); //attach servo naar pin 9}
void loop {//Most van het Wetboek van de sensor is genomen van David Mellis van PING sensor code //I gewijzigd voor een 4-pin sensor als oppsed aan de 3-pin sensor / / geven een korte lage puls vooraf om een schoon hoog puls: pinMode (aftocht, OUTPUT); digitalWrite (aftocht, laag); delayMicroseconds(2); delayMicroseconds(5); digitalWrite (aftocht, hoog) en digitalWrite (aftocht, laag);
Rduration = pulseIn (Rin, hoge); pinMode (Lout, uitvoer); digitalWrite (Lout, laag); delayMicroseconds(2); digitalWrite (Lout, hoge); delayMicroseconds(5); digitalWrite (Lout, laag);
Lduration = pulseIn (Lin, hoge);
de tijd omzetten in een afstand Rinches = microsecondsToInches(Rduration); Trouwfeesten = microsecondsToInches(Lduration); Als (debug) {Serial.print ("links:"); Serial.Print(Linches); Serial.println ("in"); Serial.Print ("recht:"); Serial.Print(Rinches); Serial.println ("in"); } follow(); }
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-PI...
retourneren van microseconden / 74 / 2; }
VOID follow() {als (trouwfeesten < = drempel || Rinches < = drempel) {als (trouwfeesten + 2 < Rinches) {hoek = hoek - 2;} als (Rinches + 2 < trouwfeesten) {hoek = hoek + 2;}} als (hoek > 160) {hoek = 160;} als (hoek < 0) {hoek = 0;} myservo.write(angle); }