From d2b824d01655b37db2385eb6d04e4550aace291f Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Mon, 15 Jul 2019 21:12:17 +0300 Subject: [PATCH] disable 12v after 20s of inactivity --- Firmware/EggbotWireless/include/Globals.h | 9 +++++++++ Firmware/EggbotWireless/include/Power.h | 8 ++++++-- Firmware/EggbotWireless/src/Power.cpp | 16 +++++++++++++--- Firmware/EggbotWireless/src/main.cpp | 16 ++++++++++++++-- 4 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 Firmware/EggbotWireless/include/Globals.h diff --git a/Firmware/EggbotWireless/include/Globals.h b/Firmware/EggbotWireless/include/Globals.h new file mode 100644 index 0000000..392490e --- /dev/null +++ b/Firmware/EggbotWireless/include/Globals.h @@ -0,0 +1,9 @@ +#ifndef GLOBALS_H +#define GLOBALS_H + +#include +#include "Power.h" + +Power power; + +#endif // GLOBALS_H \ No newline at end of file diff --git a/Firmware/EggbotWireless/include/Power.h b/Firmware/EggbotWireless/include/Power.h index 532327e..2d6a85e 100644 --- a/Firmware/EggbotWireless/include/Power.h +++ b/Firmware/EggbotWireless/include/Power.h @@ -6,10 +6,14 @@ #include "Config.h" class Power { - public: + private: + bool enabled12v = false; + + public: Power(); void disable12v(); void enable12v(); + bool isEnabled12v(); }; -#endif // POWER_H \ No newline at end of file +#endif // POWER_H \ No newline at end of file diff --git a/Firmware/EggbotWireless/src/Power.cpp b/Firmware/EggbotWireless/src/Power.cpp index 4682933..bb9e8f0 100644 --- a/Firmware/EggbotWireless/src/Power.cpp +++ b/Firmware/EggbotWireless/src/Power.cpp @@ -2,9 +2,19 @@ Power::Power() { pinMode(pin12v, OUTPUT); - enable12v(); + disable12v(); } -void Power::disable12v() { digitalWrite(pin12v, false); } +void Power::disable12v() { + digitalWrite(pin12v, false); + enabled12v = false; +} -void Power::enable12v() { digitalWrite(pin12v, true); } \ No newline at end of file +void Power::enable12v() { + digitalWrite(pin12v, true); + enabled12v = true; +} + +bool Power::isEnabled12v() { + return enabled12v; +} \ No newline at end of file diff --git a/Firmware/EggbotWireless/src/main.cpp b/Firmware/EggbotWireless/src/main.cpp index 8862b7a..859ec17 100644 --- a/Firmware/EggbotWireless/src/main.cpp +++ b/Firmware/EggbotWireless/src/main.cpp @@ -2,6 +2,8 @@ #include #include #include +#include "Globals.h" +#include "Power.h" #include "GCodeParser.h" #include "common/Commands.h" @@ -71,18 +73,28 @@ void execCommand(Command command) { void setup() { Serial.begin(115200); Wire.begin(12, 13); - pinMode(5, OUTPUT); - digitalWrite(5, true); + power.enable12v(); } +unsigned long commandTime = 0; +constexpr unsigned long commandTimeout = 20000; + void loop() { + if(millis() - commandTime > commandTimeout) { + power.disable12v(); + } while (Serial.available() > 0) { char inChar = Serial.read(); inString += inChar; if (inChar == '\n') { inString.trim(); + if(!power.isEnabled12v()){ + power.enable12v(); + delay(100); + } execCommand(parseGCode(inString)); + commandTime = millis(); unsigned long reqTime = millis(); while (waitingForNext) { while (!Wire.available()) {