//自動門
#include <Servo.h>
Servo myservo;
int sensorValue = 0;
const int IR_InPin = A3; // A3 接上 IR
const int Ledred_OutPin = 10;
const int Ledgreen_OutPin = 11;
const int BezzerPin = 9;
void setup() {
Serial.begin(57600);
myservo.attach(4); //360度伺服馬達接第4腳
pinMode(IR_InPin, INPUT);
pinMode(BezzerPin, OUTPUT);
pinMode(Ledred_OutPin, OUTPUT);
pinMode(Ledgreen_OutPin, OUTPUT);
}
void loop() {
sensorValue = analogRead(IR_InPin);
myservo.write(90);
if (sensorValue >= 360){
myservo.write(50); // 順時針轉 (開門)
digitalWrite(Ledred_OutPin, HIGH); //10
tone(BezzerPin, 1000, 100);
delay(2500); //運轉 2.5秒
myservo.write(90);
tone(BezzerPin, 100, 10);
digitalWrite(Ledgreen_OutPin, HIGH);
digitalWrite(Ledred_OutPin, LOW);
delay(10000); //開門時間 10秒
digitalWrite(Ledgreen_OutPin, LOW);
digitalWrite(Ledred_OutPin, HIGH );
myservo.write(180); // 逆時針轉 (關門)
tone(BezzerPin, 100, 10);
delay(2500); //運轉 2.5 秒
tone(BezzerPin, 1000, 100);
digitalWrite(Ledred_OutPin, LOW);
myservo.write(90); //馬達停止
}
myservo.write(90);
}
// 360 度馬達 90 為停止 0-89順時針轉 , 91-180 逆時針轉
利用智高 1247A 的套件, 以 Arduino 程式直接燒錄在板子上, 完成一個自動門
當車子行經此門, IR 感應到後, 門會開啟 10 秒鐘的時間, 之後再行關閉
2017-03-14