Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Fill-in information from your Blynk Template here
- #define BLYNK_TEMPLATE_ID "TMPLiTcSd8qR"
- #define BLYNK_DEVICE_NAME "ScaleSwitch"
- #define BLYNK_FIRMWARE_VERSION "0.2.8"
- #define BLYNK_PRINT Serial
- //#define BLYNK_DEBUG
- #define APP_DEBUG
- // Uncomment your board, or configure a custom board in Settings.h
- //#define USE_WROVER_BOARD
- //#define USE_TTGO_T7
- #include "BlynkEdgent.h"
- WidgetLED led1(V1);
- WidgetLED led2(V2);
- WidgetLED led3(V12);
- WidgetLED led4(V13);
- BlynkTimer timer;
- int realSwitch = 0;
- const int realSwitchPin = 27;
- const int batteryPin = 36;
- int adc_read = 0;
- float batteryVoltage = 0;
- int batteryPercent = 0;
- bool scaleSwitchOn = false;
- bool blynkScaleSwitchOn = false;
- bool scaleStart = false;
- bool scaleBoot = false;
- bool scaleRun = false;
- bool scaleOff = false;
- const int output1 = 4;
- const int scaleDisplayMOSFET = 16;
- const int scaleMOSFET = 17;
- const int output4 = 18;
- void setup()
- {
- Serial.begin(115200);
- delay(100);
- BlynkEdgent.begin();
- 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);
- }
- 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;
- digitalWrite(scaleMOSFET, HIGH);
- digitalWrite(output4, HIGH);
- timer.setTimeout(30000, []()
- {
- scaleStart = false;
- scaleBoot = false;
- scaleRun = true;
- digitalWrite(scaleDisplayMOSFET, HIGH);
- });
- }
- else if (scaleOff) {
- scaleRun = false;
- digitalWrite(scaleDisplayMOSFET, LOW);
- digitalWrite(scaleMOSFET, LOW);
- digitalWrite(output4, LOW);
- }
- }
- void blynkData() {
- if (scaleOff) {
- Blynk.virtualWrite(V1, LOW);
- Blynk.virtualWrite(V2, LOW);
- Blynk.virtualWrite(V12, LOW);
- Blynk.virtualWrite(V13, HIGH);
- }
- else if (scaleBoot) {
- Blynk.virtualWrite(V1, HIGH);
- Blynk.virtualWrite(V13, LOW);
- }
- else if (scaleRun) {
- Blynk.virtualWrite(V1, LOW);
- Blynk.virtualWrite(V2, HIGH);
- Blynk.virtualWrite(V12, HIGH);
- }
- Blynk.virtualWrite(V5, realSwitch);
- Blynk.virtualWrite(V9, adc_read);
- Blynk.virtualWrite(V4, batteryVoltage);
- Blynk.virtualWrite(V3, batteryPercent);
- }
- BLYNK_WRITE (V0) {
- if (param.asInt() == 0) {
- blynkScaleSwitchOn = false;
- }
- else if (param.asInt() == 1) {
- blynkScaleSwitchOn = true;
- }
- }
- void loop() {
- BlynkEdgent.run();
- scaleOperation();
- timer.run();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement