Arduino 入门教程(十一)使用超声波和Servo实时显示测量的距离
Potential diagram:
schematic diagram :
Mathematical formula:
Arduino Code:
#include <Servo.h>
int trigPin = 13;
int echoPin = 11;
int servoControlPin = 6;
float pingTime;
float targetDistance;
float speedOfSound = 776.5;
float servoAngle;
Servo myPointer;
void setup(){
Serial.begin(9600);
pinMode(servoControlPin,OUTPUT);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
myPointer.attach(servoControlPin);
}
void loop(){
digitalWrite(trigPin,LOW);
delayMicroseconds(2000);
digitalWrite(trigPin,HIGH);
delayMicroseconds(15);
digitalWrite(trigPin,LOW);
delayMicroseconds(10);
pingTime = pulseIn(echoPin,HIGH);
pingTime = pingTime/1000000;
pingTime = pingTime/3600;
targetDistance = speedOfSound*pingTime;
targetDistance = targetDistance/2;
targetDistance *= 63360;
Serial.print("The Distance to Target is: ");
Serial.print(targetDistance);
Serial.println(" inches");
servoAngle = (106./7.)*targetDistance + 37;
myPointer.write(servoAngle);
Serial.println(servoAngle);
delay(100);
}