Pin State waits for connection

Hi,

I am working on smart home project with blynk. This code running nice but after reboot, A5 pin goes LOW until blynk connection.

I am missing something I guess…


#include <UIPEthernet.h>
#include <BlynkSimpleUIPEthernet.h>
BlynkTimer timer;

byte alarmState = 0;
char auth[] = "toookeeennnnn....";

byte area1 = 9;
byte area1State;

byte area2 = 8;
byte area2State;

byte area3 = 7;
byte area3State;

byte area4 = 6;
byte area4State;

byte alarmPin = A5;

byte moveDetect = 0;

byte siren = 0;

String areaInfo;

WidgetLCD lcd(V1);

void setup()
{
  pinMode(area1, INPUT_PULLUP);
  pinMode(area2, INPUT_PULLUP);
  pinMode(area3, INPUT_PULLUP);
  pinMode(area4, INPUT);

  pinMode(alarmPin, OUTPUT);
  pinMode(alarmPin, HIGH);

  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(A3, OUTPUT);
  pinMode(A4, OUTPUT);

  digitalWrite(A0, HIGH);
  digitalWrite(A1, HIGH);
  digitalWrite(A2, HIGH);
  digitalWrite(A3, HIGH);
  digitalWrite(A4, HIGH);

  Blynk.begin(auth);
  timer.setInterval(1000L, alarmControl);
  timer.setInterval(4000L, screen1);
  timer.setInterval(4000L, screen2);
  timer.setInterval(15000L, notifSend);
}

void loop()
{
  Blynk.run();
  timer.run();
}

BLYNK_WRITE(V0) {
  byte value = param.asInt();
  alarmState = value;
}

void alarmControl() {
  area1State = digitalRead(area1);
  area2State = digitalRead(area2);
  area3State = digitalRead(area3);
  area4State = digitalRead(area4);
  //-------------------------------------
  if (area1State == HIGH) {
    moveDetect = 1;
    areaInfo = "Giris  ";
  } else if (area2State == HIGH) {
    moveDetect = 1;
    areaInfo = "Mutfak ";
  } else if (area3State == HIGH) {
    moveDetect = 1;
    areaInfo = "Y.Odasi";
  } else if (area4State == HIGH) {
    moveDetect = 1;
    areaInfo = "Sensor ";
  } else {
    moveDetect = 0;
    areaInfo = "Yok    ";
  }

  if (alarmState == 1) {
    if (moveDetect == 1) {
      digitalWrite(alarmPin, LOW);
      areaInfo = "Siren! ";
      siren = 1;
    }
  } else {
    digitalWrite(alarmPin, HIGH);
    siren = 0;
  }
}

void screen1() {
  if (alarmState == 1) {
    lcd.print(0, 0, "Alarm Devrede");
  } else {
    lcd.print(0, 0, "Alarm Kapali ");
  }
}

void screen2 () {
  lcd.print(0, 1, "Hareket:");
  lcd.print(8, 1, areaInfo);
}

void notifSend() {
  if (siren == 1) {
    Blynk.notify("Dikkat, istenmeyen durum! Alarm devreye sokuldu.");
  }
}

``

on startup alarmState is 0, moveDetect is 0 but waits connection to go LOW

I defined A5 pin as byte. I realized byte can handle numbers between 0 and 255. A0 may be problem

Hello,

Your question has nothing to do with Blynk… you do not use pinMode() to set a pin state (aside from PULLUP)… only its MODE :stuck_out_tongue_winking_eye:

1 Like

Ooooh my god! I need to buy coffe which is harder than i have…

Im sorry. It is stupid mistake :frowning: and Thank you so much…