HELLO with this code I control 4 relay with both physical buttons and blynk application. no problem. In addition to this code, I have added a motion detector, but the nodemcu is permanently connected and disconnected. and the motion detector does not work. The v0 button also does not work. where I could not find fault. can you help me
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>
#define DHTPIN 01 // DHT PİN TX PİN
#define DHTTYPE DHT11 // DHT 11
#define ledPin 9
#define pirPin D1 // motion detector
int pirState;
int val;
int x;
char auth[] = "aeb3a337085548fdbf496802c123e828";
//D1 HAREKET SENSORU BAGLA
char ssid[] = "okhan";
char pass[] = "atakan2009";
const int butonpin = D5; // fiziksel butonlar
const int butonpin1 = D6; //
const int butonpin2 = D7;
const int butonpin3 = 03; //
const int RolePin = D4; // röle çıkışları
const int RolePin1 = D2;
const int RolePin2 = D3;
const int RolePin3 = D8;
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
void ykilicaslanb();
void ykilicaslanb1();
void ykilicaslanb2();
void ykilicaslanb3();
int butonpindurumu = LOW; // AÇIK
int RolePindurumu = HIGH; // KAPALI
//
int butonpin1durumu = LOW; // AÇIK
int RolePin1durumu = HIGH; // KAPALI
//
int butonpin2durumu = LOW; // AÇIK
int RolePin2durumu = HIGH; // KAPALI
//
int butonpin3durumu = LOW; // AÇIK
int RolePin3durumu = HIGH; // KAPALI
//*******röle durumları*****************
#define YKA_AC 0 // YKA_AC ve YKA_KAPA röle durumları boot ettiginde,
#define YKA_KAPA 1 // akitfken kullanilacak pin durumu
void setup()
{
Serial.begin (9600);
Blynk.begin(auth, ssid, pass);
dht.begin();
pinMode(RolePin, OUTPUT); // pin durumlar
pinMode(RolePin1, OUTPUT); // pin durumlar
pinMode(RolePin2, OUTPUT); // pin durumlar
pinMode(RolePin3, OUTPUT); // pin durumlar
pinMode(butonpin, INPUT_PULLUP); // buton olarak basıldığında açılacak
pinMode(butonpin1, INPUT_PULLUP); // buton olarak basıldığında açılacak
pinMode(butonpin2, INPUT_PULLUP); // buton olarak basıldığında açılacak
pinMode(butonpin3, INPUT_PULLUP); // buton olarak basıldığında açılacak
digitalWrite(RolePin, RolePindurumu);
digitalWrite(RolePin1, RolePin1durumu);
digitalWrite(RolePin2, RolePin2durumu);
digitalWrite(RolePin3, RolePin3durumu);
digitalWrite(RolePin, YKA_KAPA); // ilk bootta role durumlari
digitalWrite(RolePin1, YKA_KAPA); // ilk bootta role durumlari
digitalWrite(RolePin2, YKA_KAPA); // ilk bootta role durumlari
digitalWrite(RolePin3, YKA_KAPA); //ilk bootta role durumlari
pinMode(ledPin, OUTPUT);
pinMode(pirPin, INPUT);
// fiziksel buton haberlesme suresi milisaniye
timer.setInterval(100L, ykilicaslanb); // röle çekim süresi
timer.setInterval(100L, ykilicaslanb1);// röle çekim süresi
timer.setInterval(100L, ykilicaslanb2);// röle çekim süresi
timer.setInterval(100L, ykilicaslanb3);// röle çekim süresi
timer.setInterval(500L, sensoryolla);//ısı ve nem sensor durumlari
timer.setInterval(100L, PIRval);
timer.setInterval(100L, pir);
}
// sistem herzaman aktif kalacak sanal tuslara
BLYNK_CONNECTED()
{
// fiziksel butondaki verileri ceki son durumlar telefonda goster. acik yada kapali durumlarini
Blynk.syncVirtual(V1);
Blynk.syncVirtual(V2);
Blynk.syncVirtual(V3);
Blynk.syncVirtual(V4);
Blynk.syncVirtual(V0);
}
// butona basildiginda
// ceptelefonundaki buton aktif pasif durumu
BLYNK_WRITE(V1)
{
RolePindurumu = param.asInt();
digitalWrite(RolePin, RolePindurumu);
}
void ykilicaslanb()
{
if (digitalRead(butonpin) == LOW)
{
// butonpindurumu basili degilken
if (butonpindurumu != LOW)
{
// telefondaki role durumu
RolePindurumu = !RolePindurumu;
digitalWrite(RolePin, RolePindurumu);
Blynk.virtualWrite(V1, RolePindurumu); //butona basinca telefondaki butonun durumu
}
butonpindurumu = LOW;
}
else
{
butonpindurumu = HIGH;
}
}
//dneeme
BLYNK_WRITE(V2)
{
RolePin1durumu = param.asInt();
digitalWrite(RolePin1, RolePin1durumu);
}
void ykilicaslanb1()
{
if (digitalRead(butonpin1) == LOW)
{
// butonpindurumu
if (butonpin1durumu != LOW)
{
// role durumu
RolePin1durumu = !RolePin1durumu;
digitalWrite(RolePin1, RolePin1durumu);
Blynk.virtualWrite(V2, RolePin1durumu); //butona basinca telefondaki butonun durumu
}
butonpin1durumu = LOW;
}
else
{
butonpin1durumu = HIGH;
}
}
////BUTON 3
BLYNK_WRITE(V3)
{
RolePin2durumu = param.asInt();
digitalWrite(RolePin2, RolePin2durumu);
}
void ykilicaslanb2()
{
if (digitalRead(butonpin2) == LOW)
{
// butonpindurumu
if (butonpin2durumu != LOW)
{
// röle durumu
RolePin2durumu = !RolePin2durumu;
digitalWrite(RolePin2, RolePin2durumu);
Blynk.virtualWrite(V3, RolePin2durumu); //butona basinca telefondaki butonun durumu
}
butonpin2durumu = LOW;
}
else
{
butonpin2durumu = HIGH;
}
}
////BUTON 4
BLYNK_WRITE(V4)
{
RolePin3durumu = param.asInt();
digitalWrite(RolePin3, RolePin3durumu);
}
void ykilicaslanb3()
{
if (digitalRead(butonpin3) == LOW)
{
// durumlar
if (butonpin3durumu != LOW)
{
// Toggle relay durumu
RolePin3durumu = !RolePin3durumu;
digitalWrite(RolePin3, RolePin3durumu);
Blynk.virtualWrite(V4, RolePin3durumu); //butona basinca telefondaki butonun durumu
}
butonpin3durumu = LOW;
}
else
{
butonpin3durumu = HIGH;
}
}
//////
//HAREKET SENSOR
BLYNK_WRITE(V0){
x = param.asInt();
}
void PIRval(){
val = digitalRead(pirPin);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
void pir(){
if (x == 1){
if (digitalRead(pirPin) == HIGH){
Blynk.notify("ALARM!!!");
}
}
}
//HAREKET SENSOR BITISI
void sensoryolla()
{
float h = dht.readHumidity();
float t = dht.readTemperature(); // sicaklik olc
if (isnan(h) || isnan(t)) {
Serial.println("sensor okuma hatasi!");
return;
}
// sanal butonlara derece yolla
// v5 v6
Blynk.virtualWrite(V5, h); //NEM
Blynk.virtualWrite(V6, t);// SICAKLIK
}
//////// buton bitisleri
void loop()
{
Blynk.run(); // blynk calis
timer.run(); // zaman calis
}