Advertisement
hms11

ESP32ScaleSwitch0.3.1

Nov 27th, 2023
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1.  
  2. // Fill-in information from your Blynk Template here
  3. #define BLYNK_TEMPLATE_ID "TMPLiTcSd8qR"
  4. #define BLYNK_TEMPLATE_NAME "ScaleSwitch"
  5.  
  6. #define BLYNK_FIRMWARE_VERSION "0.3.1"
  7.  
  8. #define BLYNK_PRINT Serial
  9. //#define BLYNK_DEBUG
  10.  
  11. #define APP_DEBUG
  12.  
  13. // Uncomment your board, or configure a custom board in Settings.h
  14. //#define USE_WROVER_BOARD
  15. //#define USE_TTGO_T7
  16.  
  17. #include "BlynkEdgent.h"
  18.  
  19. WidgetLED led1(V1);
  20. WidgetLED led2(V2);
  21. WidgetLED led3(V12);
  22. WidgetLED led4(V13);
  23.  
  24. BlynkTimer timer;
  25.  
  26. int realSwitch = 0;
  27. const int realSwitchPin = 27;
  28. const int batteryPin = 36;
  29. int adc_read = 0;
  30. float batteryVoltage = 0;
  31. int batteryPercent = 0;
  32. bool scaleSwitchOn = false;
  33. bool blynkScaleSwitchOn = false;
  34. bool scaleStart = false;
  35. bool scaleBoot = false;
  36. bool scaleRun = false;
  37. bool scaleOff = false;
  38.  
  39. const int output1 = 4;
  40. const int scaleDisplayMOSFET = 16;
  41. const int output3 = 17;
  42. const int scaleMOSFET = 18;
  43.  
  44.  
  45.  
  46.  
  47. void setup()
  48. {
  49. Serial.begin(115200);
  50. delay(100);
  51. BlynkEdgent.begin();
  52.  
  53. pinMode(realSwitchPin, INPUT);
  54. pinMode(batteryPin, INPUT);
  55. pinMode(scaleMOSFET, OUTPUT);
  56. pinMode(output1, OUTPUT);
  57. pinMode(output3, OUTPUT);
  58. pinMode(scaleDisplayMOSFET, OUTPUT);
  59.  
  60. digitalWrite(output1, HIGH);
  61. digitalWrite(scaleDisplayMOSFET, LOW);
  62. digitalWrite(scaleMOSFET, LOW);
  63. digitalWrite(output3, LOW);
  64. Blynk.syncAll();
  65. Blynk.virtualWrite(V2, LOW);
  66. timer.setInterval(750,blynkData);
  67. }
  68.  
  69.  
  70. void realScaleSwitch() {
  71. realSwitch = digitalRead(realSwitchPin);
  72. if (realSwitch == 0) {
  73. scaleSwitchOn = true;
  74. }
  75. else if (realSwitch == 1) {
  76. scaleSwitchOn = false;
  77. }
  78. }
  79.  
  80.  
  81. void switchState() {
  82. if ((blynkScaleSwitchOn) || (scaleSwitchOn)) {
  83. if (!scaleRun) {
  84. scaleOff = false;
  85. scaleStart = true;
  86. }
  87. }
  88. if ((!scaleSwitchOn) && (!blynkScaleSwitchOn)) {
  89. scaleOff = true;
  90. }
  91. }
  92.  
  93.  
  94. void batteryMonitor() {
  95. adc_read = analogRead(batteryPin);
  96. batteryVoltage = (adc_read * 0.003241);
  97. batteryPercent = map(adc_read, 3708, 3920, 0, 100);
  98. }
  99.  
  100. void scaleOperation() {
  101. batteryMonitor();
  102. realScaleSwitch();
  103. switchState();
  104. if (scaleStart) {
  105. scaleBoot = true;
  106. digitalWrite(scaleMOSFET, HIGH);
  107. timer.setTimeout(30000, []()
  108. {
  109. scaleStart = false;
  110. scaleBoot = false;
  111. scaleRun = true;
  112. digitalWrite(scaleDisplayMOSFET, HIGH);
  113. digitalWrite(output3, HIGH);
  114. });
  115. }
  116. else if (scaleOff) {
  117. scaleRun = false;
  118. digitalWrite(scaleDisplayMOSFET, LOW);
  119. digitalWrite(scaleMOSFET, LOW);
  120. digitalWrite(output3, LOW);
  121. }
  122. }
  123.  
  124. void blynkData() {
  125. if (scaleOff) {
  126. Blynk.virtualWrite(V1, LOW);
  127. Blynk.virtualWrite(V2, LOW);
  128. Blynk.virtualWrite(V12, LOW);
  129. Blynk.virtualWrite(V13, HIGH);
  130. }
  131. else if (scaleBoot) {
  132. Blynk.virtualWrite(V1, HIGH);
  133. Blynk.virtualWrite(V13, LOW);
  134. }
  135. else if (scaleRun) {
  136.  
  137. Blynk.virtualWrite(V1, LOW);
  138. Blynk.virtualWrite(V2, HIGH);
  139. Blynk.virtualWrite(V12, HIGH);
  140. }
  141.  
  142. Blynk.virtualWrite(V5, realSwitch);
  143. Blynk.virtualWrite(V9, adc_read);
  144. Blynk.virtualWrite(V4, batteryVoltage);
  145. Blynk.virtualWrite(V3, batteryPercent);
  146. }
  147.  
  148.  
  149. BLYNK_WRITE (V0) {
  150. if (param.asInt() == 0) {
  151. blynkScaleSwitchOn = false;
  152. }
  153. else if (param.asInt() == 1) {
  154. blynkScaleSwitchOn = true;
  155. }
  156. }
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163. void loop() {
  164. BlynkEdgent.run();
  165. scaleOperation();
  166. timer.run();
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement