When I using normal code(offline on monitor) it work fine.
But when I combine with BlynkEdgent it give me weird value 1 upto 15 and down to 1 again loop like this.
Ps.sorry for my eng skill
Here the code
#define BLYNK_TEMPLATE_ID "*****PLW0*****"
#define BLYNK_DEVICE_NAME "Test Counter"
//#define BLYNK_AUTH_TOKEN "_____"
#define BLYNK_FIRMWARE_VERSION "0.1.0"
#define BLYNK_PRINT Serial
#define APP_DEBUG
#include "BlynkEdgent.h"
BlynkTimer timer;
//=================================================
const int TrigPin = D1;
int EchoPin = D2;
long duration;
long cm ;
//======================================================
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
BlynkEdgent.begin();
timer.setInterval(300L, sendUltrasonic);
delay(2000);
}
//====================================================
void loop() {
BlynkEdgent.run();
timer.run();
}
//====================================================
void sendUltrasonic() {
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
duration = pulseIn(EchoPin, HIGH);
cm = duration*0.034/2;
Blynk.virtualWrite(V7,cm);
Serial.print(cm);
Serial.print("cm");
Serial.println();
}
And this the offline code that work fine
const int TrigPin = D1;
int EchoPin = D2;
long duration;
long cm ;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
duration = pulseIn(EchoPin, HIGH);
cm = duration*0.034/2;
Serial.print(cm);
Serial.print("cm");
Serial.println();
}