#include <Servo.h> //servo庫
Servo servo; //創建舵機物件來控制舵機
int trigPin = 5;
int echoPin = 6;
int servoPin = 7;
int led= 10;
long duration, dist, average;
long aver[3]; //array for average
void setup() {
//初始化串口通信以及連接SR04的引腳
Serial.begin(9600);
servo.attach(servoPin);//把連接在引腳7上的舵機賦予舵機對其控制
pinMode(trigPin, OUTPUT); //要檢測引腳上輸入的脈沖寬度,需要先設定為輸入狀態
pinMode(echoPin, INPUT);
servo.write(0); //close cap on power on
delay(500)
servo.detach();
}
void measure() {
digitalWrite(10,HIGH);
digitalWrite(trigPin, HIGH); //產生一個10us的高脈沖去觸發TrigPin
delayMicroseconds(2);
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
dist = (duration/2) / 10; //obtain distance 檢測脈沖寬度并測算出距離
}
void loop() {
for (int i=0;i<=2;i++) { //average distance
measure();
aver[i]=dist;
delay(10); //delay between measurements
}
dist=(aver[0]+aver[1]+aver[2])/3;
if ( dist<50 ) {
//Change distance as per your need
servo.attach(servoPin);
delay(1);
servo.write(0);
delay(3000);
servo.write(150);
delay(1000);
servo.detach();
}
Serial.print(dist);
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/284919.html
標籤:單片機/工控
下一篇:電路板上蜂鳴器不響