Advertisement
hms11

ScaleSwitchNonBlocking

Dec 21st, 2022
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.05 KB | None | 0 0
  1. #define BLYNK_TEMPLATE_ID "TMPLiTcSd8qR"
  2. #define BLYNK_DEVICE_NAME "ScaleSwitch"
  3.  
  4. #define BLYNK_FIRMWARE_VERSION "0.2.7"
  5.  
  6. #define BLYNK_PRINT Serial
  7. //#define BLYNK_DEBUG
  8.  
  9. #define APP_DEBUG
  10.  
  11. #include "BlynkEdgent.h"
  12.  
  13. WidgetLED led1(V1);
  14. WidgetLED led2(V2);
  15. WidgetLED led3(V12);
  16. WidgetLED led4(V13);
  17.  
  18. WidgetTerminal terminal(V6);
  19.  
  20. #if CONFIG_FREERTOS_UNICORE
  21. #define ARDUINO_RUNNING_CORE 0
  22. #else
  23. #define ARDUINO_RUNNING_CORE 1
  24. #endif
  25.  
  26. // Uncomment your board, or configure a custom board in Settings.h
  27. //#define USE_WROVER_BOARD
  28. //#define USE_TTGO_T7
  29. //#define USE_ESP32C3_DEV_MODULE
  30. //#define USE_ESP32S2_DEV_KIT
  31.  
  32. const int relayPin = 23;
  33. const int btnPin = 13;
  34.  
  35. int relayState = HIGH;
  36. int btnState = LOW;
  37.  
  38. BlynkTimer timer;
  39.  
  40. int realSwitch = 0;
  41. const int realSwitchPin = 27;
  42. const int batteryPin = 36;
  43. int adc_read = 0;
  44. float batteryVoltage = 0;
  45. int batteryPercent = 0;
  46. int scaleWeigh = 0;
  47. String scaleUnit = "LBS";
  48. int charLocation = 0;
  49. char scaleSerial;
  50. char scaleReading[18];
  51. bool scaleSwitchOn = false;
  52. bool blynkScaleSwitchOn = false;
  53. bool scaleStart = false;
  54. bool scaleBoot = false;
  55. bool scaleRun = false;
  56. bool scaleOff = false;
  57. bool displayOn = false;
  58. bool newTerminalOff = false;
  59. bool newTerminalBoot = false;
  60. bool newTerminalRun = false;
  61.  
  62. const int output1 = 4;
  63. const int scaleDisplayMOSFET = 16;
  64. const int scaleMOSFET = 17;
  65. const int output4 = 18;
  66.  
  67.  
  68.  
  69. void TaskCheck( void *pvParameters );
  70.  
  71. void setup()
  72. {
  73. Serial.begin(115200);
  74. delay(100);
  75.  
  76. terminal.clear();
  77.  
  78. pinMode(realSwitchPin, INPUT);
  79. pinMode(batteryPin, INPUT);
  80. pinMode(scaleMOSFET, OUTPUT);
  81. pinMode(output1, OUTPUT);
  82. pinMode(output4, OUTPUT);
  83. pinMode(scaleDisplayMOSFET, OUTPUT);
  84.  
  85. digitalWrite(output1, LOW);
  86. digitalWrite(scaleDisplayMOSFET, LOW);
  87. digitalWrite(scaleMOSFET, LOW);
  88. digitalWrite(output4, LOW);
  89. Blynk.syncAll();
  90. Blynk.virtualWrite(V2, LOW);
  91. timer.setInterval(750,blynkData);
  92.  
  93.  
  94. xTaskCreatePinnedToCore(
  95. TaskCheck
  96. , "TaskCheck"
  97. , 4096
  98. , NULL
  99. , 1
  100. , NULL
  101. , ARDUINO_RUNNING_CORE);
  102.  
  103.  
  104. BlynkEdgent.begin();
  105. }
  106.  
  107. void loop() {
  108.  
  109. BlynkEdgent.run();
  110. }
  111.  
  112.  
  113.  
  114. BLYNK_WRITE (V0) {
  115. if (param.asInt() == 0) {
  116. blynkScaleSwitchOn = false;
  117. }
  118. else if (param.asInt() == 1) {
  119. blynkScaleSwitchOn = true;
  120. }
  121. }
  122.  
  123. void realScaleSwitch() {
  124. realSwitch = digitalRead(realSwitchPin);
  125. if (realSwitch == 0) {
  126. scaleSwitchOn = true;
  127. }
  128. else if (realSwitch == 1) {
  129. scaleSwitchOn = false;
  130. }
  131. }
  132.  
  133. void switchState() {
  134. if ((blynkScaleSwitchOn) || (scaleSwitchOn)) {
  135. if (!scaleRun) {
  136. scaleOff = false;
  137. scaleStart = true;
  138. }
  139. }
  140. if ((!scaleSwitchOn) && (!blynkScaleSwitchOn)) {
  141. scaleOff = true;
  142. }
  143. }
  144.  
  145. void batteryMonitor() {
  146. adc_read = analogRead(batteryPin);
  147. batteryVoltage = (adc_read * 0.003241);
  148. batteryPercent = map(adc_read, 3708, 3920, 0, 100);
  149. }
  150.  
  151. void scaleOperation() {
  152. batteryMonitor();
  153. realScaleSwitch();
  154. switchState();
  155. if (scaleStart) {
  156. scaleBoot = true;
  157. newTerminalOff = true;
  158. newTerminalRun = true;
  159. digitalWrite(scaleMOSFET, HIGH);
  160. digitalWrite(output4, HIGH);
  161. timer.setTimeout(30000, []()
  162. {
  163. scaleStart = false;
  164. scaleBoot = false;
  165. scaleRun = true;
  166. newTerminalBoot = true;
  167. if (displayOn) {
  168. digitalWrite(scaleDisplayMOSFET, HIGH);
  169. }
  170. });
  171. }
  172. else if (scaleOff) {
  173. scaleRun = false;
  174. newTerminalRun = true;
  175. digitalWrite(scaleDisplayMOSFET, LOW);
  176. digitalWrite(scaleMOSFET, LOW);
  177. digitalWrite(output4, LOW);
  178. }
  179. }
  180.  
  181. void blynkData() {
  182. if (scaleOff) {
  183. if (newTerminalOff) {
  184. terminal.clear();
  185. terminal.print("Scale OFF");
  186. terminal.flush();
  187. newTerminalOff = false;
  188. }
  189. Blynk.virtualWrite(V1, LOW);
  190. Blynk.virtualWrite(V2, LOW);
  191. Blynk.virtualWrite(V12, LOW);
  192. Blynk.virtualWrite(V13, HIGH);
  193. }
  194. else if (scaleBoot) {
  195. if (newTerminalBoot) {
  196. terminal.clear();
  197. terminal.print("Scale Booting, Please Wait...");
  198. terminal.flush();
  199. newTerminalBoot = false;
  200. }
  201. Blynk.virtualWrite(V1, HIGH);
  202. Blynk.virtualWrite(V13, LOW);
  203. }
  204. else if (scaleRun) {
  205. if (newTerminalRun) {
  206. terminal.clear();
  207. terminal.println("Scale Running, Communication Available");
  208. terminal.println("--Scale Zeroed--");
  209. if (displayOn) {
  210. terminal.println("--Display On--");
  211. }
  212. else {
  213. terminal.println("--Display Off--");
  214. }
  215. terminal.flush();
  216. newTerminalRun = false;
  217. }
  218. Blynk.virtualWrite(V1, LOW);
  219. Blynk.virtualWrite(V2, HIGH);
  220. if (displayOn) {
  221. Blynk.virtualWrite(V12, HIGH);
  222. }
  223. }
  224.  
  225. Blynk.virtualWrite(V5, realSwitch);
  226. Blynk.virtualWrite(V9, adc_read);
  227. Blynk.virtualWrite(V4, batteryVoltage);
  228. Blynk.virtualWrite(V3, batteryPercent);
  229. // Blynk.virtualWrite(V10, scaleSerial);
  230. }
  231.  
  232. void TaskCheck(void *pvParameters)
  233. {
  234. (void) pvParameters;
  235. scaleOperation();
  236. }
  237.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement