Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define BLYNK_TEMPLATE_ID "TMPLiTcSd8qR"
- #define BLYNK_DEVICE_NAME "ScaleSwitch"
- #define BLYNK_FIRMWARE_VERSION "0.2.7"
- #define BLYNK_PRINT Serial
- //#define BLYNK_DEBUG
- #define APP_DEBUG
- #include "BlynkEdgent.h"
- WidgetLED led1(V1);
- WidgetLED led2(V2);
- WidgetLED led3(V12);
- WidgetLED led4(V13);
- WidgetTerminal terminal(V6);
- #if CONFIG_FREERTOS_UNICORE
- #define ARDUINO_RUNNING_CORE 0
- #else
- #define ARDUINO_RUNNING_CORE 1
- #endif
- // Uncomment your board, or configure a custom board in Settings.h
- //#define USE_WROVER_BOARD
- //#define USE_TTGO_T7
- //#define USE_ESP32C3_DEV_MODULE
- //#define USE_ESP32S2_DEV_KIT
- const int relayPin = 23;
- const int btnPin = 13;
- int relayState = HIGH;
- int btnState = LOW;
- BlynkTimer timer;
- int realSwitch = 0;
- const int realSwitchPin = 27;
- const int batteryPin = 36;
- int adc_read = 0;
- float batteryVoltage = 0;
- int batteryPercent = 0;
- int scaleWeigh = 0;
- String scaleUnit = "LBS";
- int charLocation = 0;
- char scaleSerial;
- char scaleReading[18];
- bool scaleSwitchOn = false;
- bool blynkScaleSwitchOn = false;
- bool scaleStart = false;
- bool scaleBoot = false;
- bool scaleRun = false;
- bool scaleOff = false;
- bool displayOn = false;
- bool newTerminalOff = false;
- bool newTerminalBoot = false;
- bool newTerminalRun = false;
- const int output1 = 4;
- const int scaleDisplayMOSFET = 16;
- const int scaleMOSFET = 17;
- const int output4 = 18;
- void TaskCheck( void *pvParameters );
- void setup()
- {
- Serial.begin(115200);
- delay(100);
- terminal.clear();
- pinMode(realSwitchPin, INPUT);
- pinMode(batteryPin, INPUT);
- pinMode(scaleMOSFET, OUTPUT);
- pinMode(output1, OUTPUT);
- pinMode(output4, OUTPUT);
- pinMode(scaleDisplayMOSFET, OUTPUT);
- digitalWrite(output1, LOW);
- digitalWrite(scaleDisplayMOSFET, LOW);
- digitalWrite(scaleMOSFET, LOW);
- digitalWrite(output4, LOW);
- Blynk.syncAll();
- Blynk.virtualWrite(V2, LOW);
- timer.setInterval(750,blynkData);
- xTaskCreatePinnedToCore(
- TaskCheck
- , "TaskCheck"
- , 4096
- , NULL
- , 1
- , NULL
- , ARDUINO_RUNNING_CORE);
- BlynkEdgent.begin();
- }
- void loop() {
- BlynkEdgent.run();
- }
- BLYNK_WRITE (V0) {
- if (param.asInt() == 0) {
- blynkScaleSwitchOn = false;
- }
- else if (param.asInt() == 1) {
- blynkScaleSwitchOn = true;
- }
- }
- void realScaleSwitch() {
- realSwitch = digitalRead(realSwitchPin);
- if (realSwitch == 0) {
- scaleSwitchOn = true;
- }
- else if (realSwitch == 1) {
- scaleSwitchOn = false;
- }
- }
- void switchState() {
- if ((blynkScaleSwitchOn) || (scaleSwitchOn)) {
- if (!scaleRun) {
- scaleOff = false;
- scaleStart = true;
- }
- }
- if ((!scaleSwitchOn) && (!blynkScaleSwitchOn)) {
- scaleOff = true;
- }
- }
- void batteryMonitor() {
- adc_read = analogRead(batteryPin);
- batteryVoltage = (adc_read * 0.003241);
- batteryPercent = map(adc_read, 3708, 3920, 0, 100);
- }
- void scaleOperation() {
- batteryMonitor();
- realScaleSwitch();
- switchState();
- if (scaleStart) {
- scaleBoot = true;
- newTerminalOff = true;
- newTerminalRun = true;
- digitalWrite(scaleMOSFET, HIGH);
- digitalWrite(output4, HIGH);
- timer.setTimeout(30000, []()
- {
- scaleStart = false;
- scaleBoot = false;
- scaleRun = true;
- newTerminalBoot = true;
- if (displayOn) {
- digitalWrite(scaleDisplayMOSFET, HIGH);
- }
- });
- }
- else if (scaleOff) {
- scaleRun = false;
- newTerminalRun = true;
- digitalWrite(scaleDisplayMOSFET, LOW);
- digitalWrite(scaleMOSFET, LOW);
- digitalWrite(output4, LOW);
- }
- }
- void blynkData() {
- if (scaleOff) {
- if (newTerminalOff) {
- terminal.clear();
- terminal.print("Scale OFF");
- terminal.flush();
- newTerminalOff = false;
- }
- Blynk.virtualWrite(V1, LOW);
- Blynk.virtualWrite(V2, LOW);
- Blynk.virtualWrite(V12, LOW);
- Blynk.virtualWrite(V13, HIGH);
- }
- else if (scaleBoot) {
- if (newTerminalBoot) {
- terminal.clear();
- terminal.print("Scale Booting, Please Wait...");
- terminal.flush();
- newTerminalBoot = false;
- }
- Blynk.virtualWrite(V1, HIGH);
- Blynk.virtualWrite(V13, LOW);
- }
- else if (scaleRun) {
- if (newTerminalRun) {
- terminal.clear();
- terminal.println("Scale Running, Communication Available");
- terminal.println("--Scale Zeroed--");
- if (displayOn) {
- terminal.println("--Display On--");
- }
- else {
- terminal.println("--Display Off--");
- }
- terminal.flush();
- newTerminalRun = false;
- }
- Blynk.virtualWrite(V1, LOW);
- Blynk.virtualWrite(V2, HIGH);
- if (displayOn) {
- Blynk.virtualWrite(V12, HIGH);
- }
- }
- Blynk.virtualWrite(V5, realSwitch);
- Blynk.virtualWrite(V9, adc_read);
- Blynk.virtualWrite(V4, batteryVoltage);
- Blynk.virtualWrite(V3, batteryPercent);
- // Blynk.virtualWrite(V10, scaleSerial);
- }
- void TaskCheck(void *pvParameters)
- {
- (void) pvParameters;
- scaleOperation();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement