Virtuella stötfångaren (3 / 3 steg)
Steg 3: Koden
#define trigPin 3 //Sonar Triger#define echoPinL 4 //Left sonar echo
#define echoPinF 5 //Front sonar echo
#define echoPinR 6 //Right sonar echo
#define echoPinB 7 //Back sonar echo
#define vibrera 10 //Vibrate + Led stift
#define disSelect A3 //Distance Selector analoga pin
int durationL, durationF, durationR, durationB, distanceL, distanceF, distanceR, distanceB, dSelValue;
void setup() {
Serial.BEGIN (9600);
pinMode (trigPin, produktionen);
pinMode (echoPinL, ingång);
pinMode (echoPinF, ingång);
pinMode (echoPinR, ingång);
pinMode (echoPinB, ingång);
pinMode (vibrera, OUTPUT);
pinMode (disSelect, indata);
pinMode (13, OUTPUT);
digitalWrite (13, låg);
}
void loop() {
dSelValue = karta (analogRead (disSelect), 0,1023,20, 400);
Serial.Print ("avstånd Välj:");
Serial.println (dSelValue);
triger();
durationL = pulseIn (echoPinL, hög);
distanceL = (durationL/2) /29.1;
Serial.Print ("vänster =");
Serial.println (distanceL);
Serial.Print ("Triger =");
Serial.println (digitalRead (trigPin));
fördröjning (200);
triger();
durationF = pulseIn (echoPinF, hög);
distanceF = (durationF/2) /29.1;
Serial.Print ("Front =");
Serial.println (distanceF);
Serial.Print ("Triger =");
Serial.println (digitalRead (trigPin));
fördröjning (200);
triger();
durationR = pulseIn (echoPinR, hög);
distanceR = (durationR/2) /29.1;
Serial.Print ("rätt =");
Serial.println (distanceR);
Serial.Print ("Triger =");
Serial.println (digitalRead (trigPin));
fördröjning (200);
triger();
durationB = pulseIn (echoPinB, hög);
distanceB = (durationB/2) /29.1;
Serial.Print ("tillbaka =");
Serial.println (distanceB);
Serial.Print ("Triger =");
Serial.println (digitalRead (trigPin));
fördröjning (200);
om (distanceL < = dSelValue || distanceF < = dSelValue || distanceR < = dSelValue || distanceB < = dSelValue) {
för (int gånger = 1; gånger < = 8; gånger ++) {
Serial.println (gånger);
digitalWrite (vibrera, hög);
digitalWrite 13, hög.
fördröjning (100);
digitalWrite (vibrera, låg);
digitalWrite (13, låg);
fördröjning (100);
}
}
}
void triger() {
digitalWrite (trigPin, låg);
digitalWrite (13, låg);
delayMicroseconds (1000);
digitalWrite (trigPin, hög);
digitalWrite 13, hög.
Serial.Print ("Triger =");
Serial.println (digitalRead (trigPin));
delayMicroseconds (1000);
digitalWrite (trigPin, låg);
digitalWrite (13, låg);
}