Stap 6: Arduino voorbeeldcode
Const int pingPin = 2;
int sensingRangeUnit = 11; int buzzerLimit = 100; int buzzerFrequency;
VOID Setup {}
pinMode (3, OUTPUT); Hiermee stelt u de digitale pen 3 als output voor een zoemer pinMode (4, OUTPUT); Hiermee stelt u de digitale pin 4 als output voor een LED pinMode (5, OUTPUT); Hiermee stelt u de digitale pin 5 als output voor een LED pinMode (6, OUTPUT); Hiermee stelt u de digitale pin 6 als output voor een LED pinMode (7, OUTPUT); Hiermee stelt u de digitale pin 7 als output voor een LED pinMode (8, OUTPUT); Hiermee stelt u de digitale pin 8 als output voor een LED pinMode (9, OUTPUT); Hiermee stelt u de digitale pin 9 als output voor een LED pinMode (10, OUTPUT); Hiermee stelt u de digitale pen 10 als uitvoer voor een LED pinMode (11, OUTPUT); Hiermee stelt u de digitale pin 11 als output voor een LED pinMode (12, OUTPUT); Hiermee stelt u de digitale pin 12 als output voor een LED pinMode (13, OUTPUT); Hiermee stelt u de digitale pin 13 als output voor een LED-Serial.begin(9600);
}
void loop {lange duur, inch, cm;
pinMode (pingPin, OUTPUT); digitalWrite (pingPin, laag); delayMicroseconds(2); digitalWrite (pingPin, hoge); delayMicroseconds(5); digitalWrite (pingPin, laag);
pinMode (pingPin, INPUT); duur = pulseIn (pingPin, hoge);
de tijd omzetten in een afstand inch = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.Print(inches); Serial.Print ("in"); Serial.Print(cm); Serial.Print("cm"); Serial.println();
Als (inch < (sensingRangeUnit * 1)) {digitalWrite (4, HIGH);} else {digitalWrite (4, laag);}
Als (inch < (sensingRangeUnit * 2)) {digitalWrite (5, hoge);} else {digitalWrite (5, laag);}
Als (inch < (sensingRangeUnit * 3)) {digitalWrite (6, hoge);} else {digitalWrite (6, laag);}
Als (inch < (sensingRangeUnit * 4)) {digitalWrite (7, hoge);} else {digitalWrite (7, laag);}
Als (inch < (sensingRangeUnit * 5)) {digitalWrite (8, hoge);} else {digitalWrite (8, laag);}
Als (inch < (sensingRangeUnit * 6)) {digitalWrite (9, hoge);} else {digitalWrite (9, laag);}
Als (inch < (sensingRangeUnit * 7)) {digitalWrite (10, hoge);} else {digitalWrite (10, laag);}
Als (inch < (sensingRangeUnit * 8)) {digitalWrite (11, hoge);} else {digitalWrite (11, laag);}
Als (inch < (sensingRangeUnit * 9)) {digitalWrite (12, hoge);} else {digitalWrite (12, laag);}
Als (inch < (sensingRangeUnit * 10)) {digitalWrite (13, hoge);} else {digitalWrite (13, laag);}
Als (inch < buzzerLimit) {buzzerFrequency = (((buzzerLimit-inches) * 255) / buzzerLimit); analogWrite (3, buzzerFrequency);} else {analogWrite (3, 0);} delay(100); }
lang microsecondsToInches (lange microseconden) {/ / volgens de Parallax gegevensblad))), er zijn / / 73.746 microseconden per inch (dwz geluid reizen aan 1130 voeten per / / seconde). Dit geeft de afstand die is afgelegd door de ping, uitgaande / / en terugkeer, dus wij door 2 delen te krijgen van de afstand van het obstakel. retourneren van microseconden / 74 / 2; }
lang microsecondsToCentimeters (lange microseconden) {/ / de snelheid van het geluid is 340 m/s of 29 microseconden per centimeter. / / de ping reist uit en terug, zo vind je de afstand van de / / object nemen we de helft van de afgelegde afstand. keren microseconden / 29 / 2;}