Untitled
unknown
plain_text
2 years ago
3.1 kB
6
Indexable
#define BLYNK_TEMPLATE_ID "TMPL6QyTN_inE"
#define BLYNK_TEMPLATE_NAME "Voltage Sensor"
#define BLYNK_AUTH_TOKEN "lEjzYUmWHobuwSIiwKSsbrFn7xX9EsgU"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int voltagePin = A0;
const float voltageThreshold = 7.0;
const float calibrationFactor = 3.2;
int count = 0;
bool counted = false; // Flag to track whether the voltage has been counted
int statusCycle = 0; // 0: LOW, 1: NORMAL, 2: HIGH
// Replace with your network credentials
char ssid[] = "aleposyria";
char pass[] = "test123456789";
// Replace with your Blynk authentication token
char auth[] = "lEjzYUmWHobuwSIiwKSsbrFn7xX9EsgU";
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
lcd.init();
lcd.backlight();
// Set initial LED states in Blynk
Blynk.virtualWrite(V1, LOW); // LED for 'Status: LOW'
Blynk.virtualWrite(V2, LOW); // LED for 'Status: NORMAL'
Blynk.virtualWrite(V3, LOW); // LED for 'Status: HIGH'
}
void loop() {
Blynk.run();
float voltage = getVoltage() * calibrationFactor;
// Send voltage value to Blynk Gauge widget
Blynk.virtualWrite(V0, voltage);
lcd.setCursor(0, 0);
lcd.print("Amplitude: ");
lcd.print(voltage);
lcd.print("V");
if (voltage > voltageThreshold && !counted) {
count++;
counted = true; // Set the flag to indicate that voltage has been counted
lcd.setCursor(0, 1);
lcd.print("R-R Peak: ");
lcd.print(count);
// Send 'R-R Peak' to Blynk
Blynk.virtualWrite(V5, count);
}
if (voltage <= voltageThreshold) {
counted = false; // Reset the flag when voltage goes below the threshold
}
// Determine status based on count ranges
if (count >= 0 && count <= 5) {
statusCycle = 0; // LOW
} else if (count >= 6 && count <= 10) {
statusCycle = 1; // NORMAL
} else if (count >= 11 && count <= 99) {
statusCycle = 2; // HIGH
}
// Display the corresponding status on the LCD
lcd.setCursor(0, 3);
switch (statusCycle) {
case 0:
lcd.print("Status : LOW ");
// Turn on LED for 'Status: LOW'
Blynk.virtualWrite(V1, HIGH);
Blynk.virtualWrite(V2, LOW);
Blynk.virtualWrite(V3, LOW);
break;
case 1:
lcd.print("Status : NORMAL ");
// Turn on LED for 'Status: NORMAL'
Blynk.virtualWrite(V1, LOW);
Blynk.virtualWrite(V2, HIGH);
Blynk.virtualWrite(V3, LOW);
break;
case 2:
lcd.print("Status : HIGH ");
// Turn on LED for 'Status: HIGH'
Blynk.virtualWrite(V1, LOW);
Blynk.virtualWrite(V2, LOW);
Blynk.virtualWrite(V3, HIGH);
break;
}
// Increment status cycle for the next iteration
statusCycle = (statusCycle + 1) % 3; // 3 is the number of status levels
}
float getVoltage() {
int sensorValue = analogRead(voltagePin);
float voltage = sensorValue * (5.0 / 1023.0);
return voltage;
}
Editor is loading...
Leave a Comment