#include <ArduinoIoTCloud.h>
#include <WiFi.h>
#include <Arduino_ConnectionHandler.h>
#include <Servo.h>
// #include <ESP32Servo.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
Servo horizontalServo;
Servo verticalServo;
// Cloud variable
int motionDetected = LOW; // Variable to store motion detection state
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting...");
}
// Initialize servos
horizontalServo.attach(26);
verticalServo.attach(27);
pinMode(25, OUTPUT); // Relay for laser
pinMode(14, INPUT); // Motion sensor
// Initialize Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
}
void initProperties() {
ArduinoCloud.addProperty(motionDetected, READWRITE, ON_CHANGE, NULL);
}
void loop() {
ArduinoCloud.update(); // Update cloud variables
motionDetected = digitalRead(14); // Read motion sensor state
if (motionDetected == HIGH) {
activateScarecrow();
delay(5000); // Delay before checking again
}
}
void activateScarecrow() {
digitalWrite(25, HIGH); // Turn on laser
// Move laser in patterns
for (int pos = 0; pos <= 180; pos += 10) {
horizontalServo.write(pos);
delay(500);
}
for (int pos = 180; pos >= 0; pos -= 10) {
horizontalServo.write(pos);
delay(500);
}
digitalWrite(25, LOW); // Turn off laser
}