#include <Servo.h>
Servo myservo;
int pos=0;
int ledPin=12;
int inputPin=2;
int pirState=LOW;
int val=0;
int buzzer = 10;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
myservo.attach(9);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n');
if (command == "activate") {
activateDevices();
}
}
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
tone(buzzer, 1000);
if (pirState == LOW) {
pirState = HIGH;//
Serial.println("检测到运动!");
activateDevices();
}
}
else {
digitalWrite(ledPin, LOW);
if (pirState == HIGH){
pirState = LOW;
Serial.println("运动结束!");
}
}
delay(1000);
noTone(buzzer);
delay(1000);
}
void activateDevices() {
// 舵机从0度旋转到180度
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos); // 设置舵机到当前位置
delay(15); // 等待15毫秒
}
// 舵机从180度旋转回0度
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(15);
}
}