#define BLYNK_TEMPLATE_ID "TMPL2OosqVmHD"
#define BLYNK_TEMPLATE_NAME "Andrey"
#define BLYNK_AUTH_TOKEN "3211vv77ogBCcOPS0FhrjKo2oN6ekg-5"
#include <SPI.h>
#include <string.h>
#define CS 7
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
//https://www.youtube.com/watch?v=SGjQ-E3UD7A&list=PL1fGguKS29Zxgqa8A-YIpvqV9OM-cFVXZ&index=2
//MAX 7219 control registers
//LED CONTROL LIBRARY
int pirdata = 0; // pir D is connected to D15
int pirstate = LOW; // assuming no motion
int value = 0; // to read pin status
int led = 21;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32-S2!");
Serial.println("Presence Sensor Program is Running!");
Blynk.begin(auth, ssid, pass);
timer.setInterval(2000L, sendPIRData); // Send DHT data every 2 seconds
pinMode(led, OUTPUT);
pinMode(pirdata, INPUT);
}
void sendPIRData() {
presence();
if (pirstate == 0) {
char ans[] = "No presence!";
Blynk.virtualWrite(V6, ans);
pirstate = LOW;
} else if (pirstate == 1){
char ans[] = "Presence!";
Blynk.virtualWrite(V6, ans);
pirstate = HIGH;
delay(1500);
pirstate = LOW;
}
Serial.println(pirstate);
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
presence();
Blynk.run();
timer.run();
}
BLYNK_WRITE(V5) {
int buttonState = param.asInt();
if (buttonState == 1) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
void ledF(){
int x = 0;
for (x; x<2; x++) {
digitalWrite(13, HIGH);
delay(2000);
digitalWrite(13, LOW);
delay(2000);
}
}
void presence(){
value = digitalRead(pirdata);
if (value == HIGH) {
digitalWrite(21, HIGH);
Serial.println("PRESENCE DETECTED!");
delay(3000);
digitalWrite(21, LOW);
pirstate = LOW;
Serial.println("PRESENCE NO MORE DETECTED!");
delay(10000);
if (pirstate == LOW) {
Serial.println("Nothing!");
pirstate = HIGH;
}
}
}