Ultrasonic Spider-Sense (6 / 9 steg)
Steg 6: Arduino exempelkod
CONST int pingPin = 2;
int sensingRangeUnit = 11; int buzzerLimit = 100; int buzzerFrequency;
void setup() {
pinMode (3, OUTPUT); Anger det digitala stiftet 3 för en Summer pinMode (4, OUTPUT); Anger det digitala stiftet 4 för en LED pinMode (5, OUTPUT); Anger det digitala stiftet 5 för en LED pinMode (6, OUTPUT); Anger det digitala stiftet 6 för en LED pinMode (7, OUTPUT); Anger det digitala stiftet 7 för en LED pinMode (8, OUTPUT); Anger det digitala stiftet 8 för en LED pinMode (9, OUTPUT); Anger det digitala stiftet 9 för en LED pinMode (10, OUTPUT); Anger det digitala stiftet 10 för en LED pinMode (11, OUTPUT); Anger det digitala stiftet 11 för en LED pinMode (12, OUTPUT); Anger det digitala stiftet 12 för en LED pinMode (13, OUTPUT); Anger det digitala stiftet 13 som utgång för en LED Serial.begin(9600);
}
void loop() {lång varaktighet, tum, cm;
pinMode (pingPin, produktionen); digitalWrite (pingPin, låg); delayMicroseconds(2); digitalWrite (pingPin, hög); delayMicroseconds(5); digitalWrite (pingPin, låg);
pinMode (pingPin, ingång); längd = pulseIn (pingPin, hög);
konvertera tiden till ett avstånd tum = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.Print(inches); Serial.Print ("in"); Serial.Print(cm); Serial.Print("cm"); Serial.println();
om (inches < (sensingRangeUnit * 1)) {digitalWrite (4, hög);} annat {digitalWrite (4, låg);}
om (inches < (sensingRangeUnit * 2)) {digitalWrite 5, hög,} annat {digitalWrite (5, låg);}
om (inches < (sensingRangeUnit * 3)) {digitalWrite (6, hög);} annat {digitalWrite (6, låg);}
om (inches < (sensingRangeUnit * 4)) {digitalWrite (7, hög);} annat {digitalWrite (7, låg);}
om (inches < (sensingRangeUnit * 5)) {digitalWrite (8, hög);} annat {digitalWrite 8, låg.}
om (inches < (sensingRangeUnit * 6)) {digitalWrite (9, hög);} annat {digitalWrite (9, låg);}
om (inches < (sensingRangeUnit * 7)) {digitalWrite (10, hög);} annat {digitalWrite (10, låg);}
om (inches < (sensingRangeUnit * 8)) {digitalWrite (11, hög);} annat {digitalWrite (11, låg);}
om (inches < (sensingRangeUnit * 9)) {digitalWrite (12, hög);} annat {digitalWrite (12, låg);}
om (inches < (sensingRangeUnit * 10)) {digitalWrite (13, hög);} annat {digitalWrite (13, låg);}
om (inches < buzzerLimit) {buzzerFrequency = (((buzzerLimit-inches) * 255) / buzzerLimit), analogWrite (3, buzzerFrequency);} annat {analogWrite (3, 0);} delay(100); }
långa microsecondsToInches (lång mikrosekunder) {/ / enligt Parallaxs datablad))), det finns / / 73.746 mikrosekunder per tum (dvs. ljud resor på 1130 fot per / / sekund). Detta ger vägsträcka som ping, utgående / / och retur, så vi delar med 2 att få distansera av hindret. återvända mikrosekunder / 74 / 2; }
långa microsecondsToCentimeters (lång mikrosekunder) {/ / ljudets hastighet är 340 m/s eller 29 mikrosekunder per centimeter. / / ping reser ut och tillbaka, så för att hitta distansera av den / / objekt vi tar hälften av den tillryggalagda. återvända mikrosekunder / 29 / 2;}