I have an project where i can turn on off my Coffe Maker from the app that is time based. That part works fine. But when i try to add an Ultrasonic Sensor to the code, i can’t get any reading to the serial.
Sometimes it shows only the distance one time, but nothing after that.
All works regards to the ultrasonic sensor when i remove all other code. So my question is why i can’t get any readings from my sensor from the Serial monitor with the attatched code under?
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
//Put WiFi cridentials and token here----------------------------------
char auth[] = "";
char ssid[] = "";
char pass[] = "";
//---------------------------------------------------------------------
#define echoPin D6 // Echo Pin
#define trigPin D5 // Trigger Pin
long duration, distance; // Duration used to calculate distance
int coffeeSwitch = 13;
int yellowLED = 4;
int greenLED = 5;
BlynkTimer timer;
int coffeeTimer;
void setup() {
Blynk.begin(auth, ssid, pass);
Serial.begin(9600);
pinMode(coffeeSwitch, OUTPUT);
digitalWrite(coffeeSwitch, HIGH);
pinMode(yellowLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
timer.setInterval(2000L, waterLevel);
}
void waterLevel(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;
Serial.println(distance);
//Delay 50ms before next reading.
delay(50);
}
BLYNK_CONNECTED() {
Blynk.syncVirtual(V1);
}
void LEDtimer() {
digitalWrite(greenLED, LOW);
}
void coffeeOFF() {
Blynk.virtualWrite(V1, LOW);
digitalWrite(coffeeSwitch, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, HIGH);
Blynk.notify("Kaffen er klar!");
timer.setTimeout(120000L, LEDtimer);
}
BLYNK_WRITE(V1) {
int pinValue = param.asInt();
if (pinValue == 1) {
digitalWrite(coffeeSwitch, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, LOW);
coffeeTimer = timer.setTimeout(720000L, coffeeOFF);
}
if (pinValue == 0) {
digitalWrite(coffeeSwitch, HIGH);
digitalWrite(yellowLED, LOW);
timer.deleteTimer(coffeeTimer);
}
}
void loop() {
Blynk.run();
timer.run();
}
I tried the library you linked to and that works fine also, if i not include my own code.
So the first code works, but not the bottom code:
#include <NewPing.h>
#define TRIGGER_PIN D5 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN D6 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
void setup() {
Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}
void loop() {
delay(1000); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.println("cm");
}
Do not work:
#include <NewPing.h>
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define TRIGGER_PIN D5 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN D6 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
//Put WiFi cridentials and token here----------------------------------
char auth[] = "***";
char ssid[] = "***";
char pass[] = "***";
//---------------------------------------------------------------------
int coffeeSwitch = 13;
int yellowLED = 4;
int greenLED = 5;
int coffeeTimer;
BlynkTimer timer;
void setup() {
Blynk.begin(auth, ssid, pass);
Serial.begin(115200);
pinMode(coffeeSwitch, OUTPUT);
digitalWrite(coffeeSwitch, HIGH);
pinMode(yellowLED, OUTPUT);
pinMode(greenLED, OUTPUT);
timer.setInterval(1000L, waterLevel);
}
void waterLevel(){
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.println("cm");
}
BLYNK_CONNECTED() {
Blynk.syncVirtual(V1);
}
void LEDtimer(){
digitalWrite(greenLED, LOW);
}
void coffeeOFF() {
Blynk.virtualWrite(V1, LOW);
digitalWrite(coffeeSwitch, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, HIGH);
Blynk.notify("Kaffen er klar!");
timer.setTimeout(120000L, LEDtimer);
}
BLYNK_WRITE(V1) {
int pinValue = param.asInt();
if (pinValue == 1) {
digitalWrite(coffeeSwitch, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, LOW);
coffeeTimer = timer.setTimeout(720000L, coffeeOFF);
}
if (pinValue == 0) {
digitalWrite(coffeeSwitch, HIGH);
digitalWrite(yellowLED, LOW);
timer.deleteTimer(coffeeTimer);
}
}
void loop() {
Blynk.run();
timer.run();
}
Try removing all but the water height function. Do not even enable Serial.begin. Instead of printing value, put a display widget in your app, assign the read to a variable and do a Blynk virtualWrite if that variable to the display widget.
#include <NewPing.h>
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define TRIGGER_PIN D5 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN D6 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
//Put WiFi cridentials and token here----------------------------------
char auth[] = "***";
char ssid[] = "***";
char pass[] = "***";
//---------------------------------------------------------------------
float distanceWater = 0.0;
BlynkTimer timer;
void setup() {
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, waterLevel);
}
void waterLevel(){
distanceWater = (sonar.ping_cm());
Blynk.virtualWrite(V4,distanceWater);
}
void loop() {
Blynk.run();
timer.run();
}
Hello,
i ´ve got a problem with my Blynk app
I use ESP32 and ESP8266 board.
In app I use Level V Settings with HC-SR04.
I havent had a problem yet
But since last week it didnt work.
I Think it might be a problem in reading rate.
My scatch is still the same And I havent changed anything.
I wonder if you might change something there.
I see the values in my serial monitor But i Really couldnt see it in the app.