於是我運行PIR關閉的Arduino,Arduino的GND腳的3.3V針,然後進入輸入9.我調整我的代碼的網站,但它仍然不起作用。當PIR低時,我想讓繼電器打開,然後用PIR關閉高電平。我還需要PIR在註冊另一個輸入之前等待至少5秒鐘。使用PIR激活繼電器模塊電磁
#define RELAY_ON 1
#define RELAY_OFF 0
#define Relay_1 2 // Arduino Digital I/O pin number
#define Relay_2 3
#define Relay_3 4
#define Relay_4 5
#define Relay_5 6
#define Relay_6 7
/*-----(Declare Variables)-----*/
int waittime; // Delay between changes
int state = LOW; // by default, no motion detected
int val = 0; // variable to store the sensor status (value)
int pirPin = 9; //the digital pin connected to the PIR sensor's output
void setup() /****** SETUP: RUNS ONCE ******/
{
waittime = 1000;
pinMode(pirPin, INPUT); // initialize sensor as an input
Serial.begin(9600); // initialize serial
//-------(Initialize Pins so relays are active at reset)----
digitalWrite(Relay_1, RELAY_ON);
digitalWrite(Relay_2, RELAY_ON);
digitalWrite(Relay_3, RELAY_ON);
digitalWrite(Relay_4, RELAY_ON);
digitalWrite(Relay_5, RELAY_ON);
digitalWrite(Relay_6, RELAY_ON);
//---(THEN set pins as outputs)----
digitalWrite(pirPin, LOW);
pinMode(Relay_1, OUTPUT);
pinMode(Relay_2, OUTPUT);
pinMode(Relay_3, OUTPUT);
pinMode(Relay_4, OUTPUT);
pinMode(Relay_5, OUTPUT);
pinMode(Relay_6, OUTPUT);
delay(4000); //Check that all relays are active at Reset
}//--(end setup)---
void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
val = digitalRead(pirPin); // read sensor value
if (val == HIGH) { // check if the sensor is HIGH
//---(Turn all 8 relays ON in pairs)---
digitalWrite(Relay_1, RELAY_OFF);// set the Relay OFF
digitalWrite(Relay_2, RELAY_OFF);// set the Relay OFF
delay(waittime); // wait for a second
digitalWrite(Relay_3, RELAY_OFF);// set the Relay OFF
digitalWrite(Relay_4, RELAY_OFF);// set the Relay OFF
delay(waittime);
digitalWrite(Relay_5, RELAY_OFF);// set the Relay OFF
digitalWrite(Relay_6, RELAY_OFF);// set the Relay OFF
delay(5000); // wait see all relays ON
if (state == LOW) {
Serial.println("Motion detected!");
state = HIGH; // update variable state to HIGH
}
}
else {
//---(Turn all 8 relays OFF in pairs)---
digitalWrite(Relay_1, RELAY_ON);// set the Relay ON
digitalWrite(Relay_2, RELAY_ON);// set the Relay ON
delay(waittime);
digitalWrite(Relay_3, RELAY_ON);// set the Relay ON
digitalWrite(Relay_4, RELAY_ON);// set the Relay ON
delay(waittime);
digitalWrite(Relay_5, RELAY_ON);// set the Relay ON
digitalWrite(Relay_6, RELAY_ON);// set the Relay ON
delay(10000); // wait see all relays OFF
if (state == HIGH){
Serial.println("Motion stopped!");
state = LOW; // update variable state to LOW
}
}
}