Всем привет.
Делаю автополив для 3-х горшков на esp8266 и blynk.
Есть 3 функции, которые считываю данные с датчиков влажности:
void readData1(){
digitalWrite(powerPin1, HIGH);
sensorData1 = analogRead(A0); //reading the sensor on A0
Blynk.virtualWrite(V1, sensorData1); //sending to Blynk
digitalWrite(powerPin1, LOW);
}
Если функция одна, то все работает корректно, если функций 2 или:
void readData1(){
digitalWrite(powerPin1, HIGH);
sensorData1 = analogRead(A0); //reading the sensor on A0
Blynk.virtualWrite(V1, sensorData1); //sending to Blynk
digitalWrite(powerPin1, LOW);
}
void readData2(){
digitalWrite(powerPin2, HIGH);
sensorData2 = analogRead(A0); //reading the sensor on A0
Blynk.virtualWrite(V2, sensorData2); //sending to Blynk
digitalWrite(powerPin2, LOW);
}
То данные не передаются в blynk.
Если добавить задержку в любую из функций, то все работает должным образом:
void readData1(){
digitalWrite(powerPin1, HIGH);
sensorData1 = analogRead(A0); //reading the sensor on A0
**delay(200);**
Blynk.virtualWrite(V1, sensorData1); //sending to Blynk
digitalWrite(powerPin1, LOW);
}
void readData2(){
digitalWrite(powerPin2, HIGH);
sensorData2 = analogRead(A0); //reading the sensor on A0
Blynk.virtualWrite(V2, sensorData2); //sending to Blynk
digitalWrite(powerPin2, LOW);
}
Подскажите, почему так и как правильно делать?
Сейчас полный скетч выглядит следующим образом:
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "pkey";
char ssid[] = "ssid";
char pass[] = "pass";
const int powerPin1 = 4;
const int powerPin2 = 5;
int sensorData1;
int sensorData2;
BlynkTimer timer;
void readData1(){
digitalWrite(powerPin1, HIGH);
sensorData1 = analogRead(A0); //reading the sensor on A0
Blynk.virtualWrite(V1, sensorData1); //sending to Blynk
digitalWrite(powerPin1, LOW);
}
void readData2(){
digitalWrite(powerPin2, HIGH);
sensorData2 = analogRead(A0); //reading the sensor on A0
delay(200);
Blynk.virtualWrite(V2, sensorData2); //sending to Blynk
digitalWrite(powerPin2, LOW);
}
void setup(){
Serial.begin(9600);
Blynk.begin(auth, ssid, pass, IPAddress(192, 168, 1, 25), 8080);
pinMode(powerPin1, OUTPUT);
pinMode(powerPin2, OUTPUT);
timer.setInterval(2000L, readData1);
timer.setInterval(2000L, readData2);
}
void loop(){
Blynk.run();
timer.run(); // running timer every second
}