//Project Denisa
//Menghubungkan dengan hotspot
#include <WiFi.h>
char SSID[] ="Wokwi-GUEST";
char PASS[] = "";
WiFiClient client;
//memakai ThingSpeak
#include <ThingSpeak.h>
unsigned long Channel = 2382468;
unsigned int Field = 1;
const char * WriteAPI = "M7TH953RZX72UXZU";
#define timeSeconds 10
// mengatur GPIO LED dan PIR Motion Sensor
const int led = 26;
const int motionSensor = 27;
// Timer Auxlliary variables
unsigned long now = millis();
unsigned long lastTrigger = 0;
boolean startTimer = false;
// Checks if motion was detacted, sets LED HIGH and starts a timer
void IRAM_ATTR detectsMovement() {
Serial.println("MOTION DETECTED!!!");
digitalWrite(led, HIGH);
startTimer = true;
lastTrigger = millis();
}
void setup() {
//Serial port for debugging purposes
Serial.begin(9600);
//menghubungkan dengan hotspot
Serial.println("Connecting to Wifi");
WiFi.begin(SSID, PASS);
while (WiFi.status()!= WL_CONNECTED){
delay(300);
Serial.println(".");
}
Serial.println("Connected!");
//memulai program ThingSpeak
ThingSpeak.begin(client);
// PIR Motion Sensor mode INPUT_PULLUP
pinMode(motionSensor, INPUT_PULLUP);
// Set motionSensor pin as interrupt, assign interrupt function and set
attachInterrupt(digitalPinToInterrupt(motionSensor), detectsMovement, RISING);
// Set LED to LOW
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
}
void loop() {
//mengambil data dari ThingSpeak sebagai data integer
int Motion = ThingSpeak.writeField (Channel, 1, Motion, WriteAPI);
// Current time
now = millis();
// Turn off the LED after the number of seconds defined in the timeSeconds
if(startTimer && (now - lastTrigger > (timeSeconds*3000))) {
Serial.println("Motion stopped...");
digitalWrite(led, LOW);
startTimer = false;
}
}