Stap 8: Codering tijd
Nu is het tijd om te schrijven van de code waarmee alles om samen te werken. Gelukkig voor u, u de moeite van het doen van het zelf gered en ging ik vooruit en het voor u bereid.Voordat u codering, zorg ervoor om te kiezen van de juiste Raad van bestuur van de compiler. We zijn met behulp van een Arduino Mega 2560. Deze code werkt alleen met de genoemde Raad, niets anders. Het zal niet werken met een Uno of een van de vele andere Arduino boards.
Om te veranderen het bord in de Arduino compiler Ga naar Tools -> bestuur -> Arduino Mega 2560 of Mega ADK.
Voel je vrij om de code te wijzigen zoals u goeddunkt.
/ * Herten Chaser
Deze sketch leest een PING))) ultrasone afstandsmeter en geeft als resultaat de
afstand tot het dichtstbijzijnde object in bereik. Het vervolgens aan een aantal LEDs oplicht wanneer de max
afstand wordt gewijzigd.
Bovendien begint het verplaatsen van een servo
Om dit te doen, stuurt het een puls
aan de sensor te leiden van een lezing, luistert dan voor een pulse
om terug te keren. De lengte van de terugkerende puls is evenredig met
de afstand van het object van de sensor.
Het circuit:
* + V aansluiting van de PING))) gekoppeld aan + 5V
* GND aansluiting van de PING))) aangesloten op grond
* SIG aansluiting van de PING))) gekoppeld aan digitale pin 7
gemaakt: 28 juli 2013
door: Brian J. Mays
gewijzigd door:
*/
#include < Servo.h >
Servo myservo; servo-object om te bepalen van de servo maken
Const int pingPin = 26; / / pin-nummer van de sensor de output
voegt in de verlichting
int RedLED = 36; LED aangesloten op digital pin 9 (pwm pin)
int GrnLED = 38; LED aangesloten op digital pin 10 (pwm pin)
int BluLED = 40; LED aangesloten op digital pin 11 (pwm pin)
int LED [3] = {RedLED, GrnLED, BluLED}; een array om het gemakkelijker te fietsen maar de LED kleuren
int deer_counter = 0; De herten teller op nul instellen
VOID Setup {}
seriële communicatiepoorten te initialiseren:
Serial.begin(9600);
Set pinnen als uitgang pinnen (licht)
pinMode (RedLED, uitvoer);
pinMode (GrnLED, uitvoer);
pinMode (BluLED, uitvoer);
}
void loop
{
stellen variabelen voor de duur van de ping,
en het resultaat van de afstand in inches en centimeters:
lange duur, inch, maxInches;
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);
verandering voor de afstand om te beschermen
maxInches = 72;
Serial.Print(inches);
Serial.Print ("in");
Serial.println();
Als (inch < maxInches)
{
deer_counter = deer_counter + 1;
Serial.Print ("herten Counter");
Serial.Print(deer_counter);
servo inschakelen
myservo.attach(9); de servo op pin 9 hecht aan de servo-object
delay(15); wacht 15ms voor de servo te bereiken de positie
Serial.Print ("loskoppelen de Servo");
Flash van de lichten
voor (int vervagen = 255; vervagen > = 0; vervagen-= 5) {}
analogWrite(RedLED, fade);
analogWrite(GrnLED, fade);
analogWrite(BluLED, fade);
delay(50);
}
}
Loskoppelen van de servo na instructie als uitschakelen
myservo.Detach();
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;
}
lange microsecondsToCentimeters(long microseconds)
{
De snelheid van het geluid is 340 m/s of 29 microseconden per vierkante centimeter.
De ping reist uit en terug, zo vind je de afstand van de
we de helft van de afgelegde afstand nemen-object.
retourneren van microseconden / 29 / 2;
}