From ed7d1450a6089d5fadf68d2edbbcde21d1257d3d Mon Sep 17 00:00:00 2001 From: Villivateur Von Date: Sun, 29 Aug 2021 17:00:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=8A=B6=E6=80=81=E6=8C=87?= =?UTF-8?q?=E7=A4=BA=E7=81=AF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/client_network.cpp | 13 ++++++------- src/client_network.h | 2 +- src/main.cpp | 7 +++---- src/status_blink.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/status_blink.h | 21 +++++++++++++++++++++ 5 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 src/status_blink.cpp create mode 100644 src/status_blink.h diff --git a/src/client_network.cpp b/src/client_network.cpp index 7e945ae..1d7d7a4 100644 --- a/src/client_network.cpp +++ b/src/client_network.cpp @@ -1,19 +1,18 @@ #include "client_network.h" +#include "status_blink.h" -void ClientNetwork::Init() +extern StatusBlink* statusLed; + +ClientNetwork::ClientNetwork() { WiFi.begin("VVAILL", "channy161021"); - Serial.print("Connecting"); + statusLed->SetBlinkRate(StatusBlink::BlinkRate::Rate2Hz); while (WiFi.status() != WL_CONNECTED) { delay(500); - Serial.print("."); } - Serial.println(); - - Serial.print("Connected, IP address: "); - Serial.println(WiFi.localIP()); + statusLed->SetBlinkRate(StatusBlink::BlinkRate::RateAlwaysOff); status = FAIL; } diff --git a/src/client_network.h b/src/client_network.h index 20415bc..6eebb74 100644 --- a/src/client_network.h +++ b/src/client_network.h @@ -12,7 +12,7 @@ private: STATUS status; public: - void Init(); + ClientNetwork(); STATUS FetchNewData(); uint8_t GetPercent(String name); uint32_t GetRate(String name); diff --git a/src/main.cpp b/src/main.cpp index 9d0e4f6..470c388 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,18 +2,17 @@ #include "display.h" #include "client_network.h" #include "monitor_items.h" +#include "status_blink.h" DisplayPanel* displayPanel; ClientNetwork* netClient; +StatusBlink* statusLed; void setup() { - Serial.begin(115200); - Serial.println(); - + statusLed = new StatusBlink(); displayPanel = new DisplayPanel(); netClient = new ClientNetwork(); - netClient->Init(); } void loop() diff --git a/src/status_blink.cpp b/src/status_blink.cpp new file mode 100644 index 0000000..840fb88 --- /dev/null +++ b/src/status_blink.cpp @@ -0,0 +1,36 @@ +#include "status_blink.h" + +StatusBlink::StatusBlink() +{ + pinMode(STATUS_LED_PIN, OUTPUT); + digitalWrite(STATUS_LED_PIN, HIGH); +} + +static void BlinkTask() +{ + digitalWrite(STATUS_LED_PIN, !digitalRead(STATUS_LED_PIN)); // set pin to the opposite state +} + +void StatusBlink::SetBlinkRate(BlinkRate rate) +{ + switch (rate) + { + case BlinkRate::RateAlwaysOn: + flipper.detach(); + digitalWrite(STATUS_LED_PIN, LOW); + break; + case BlinkRate::RateAlwaysOff: + flipper.detach(); + digitalWrite(STATUS_LED_PIN, HIGH); + break; + case BlinkRate::Rate8Hz: + flipper.attach(0.125, BlinkTask); + break; + case BlinkRate::Rate2Hz: + flipper.attach(0.5, BlinkTask); + break; + case BlinkRate::Rate0_5Hz: + flipper.attach(2.0, BlinkTask); + break; + } +} \ No newline at end of file diff --git a/src/status_blink.h b/src/status_blink.h new file mode 100644 index 0000000..e9e8917 --- /dev/null +++ b/src/status_blink.h @@ -0,0 +1,21 @@ +#include +#include + +#define STATUS_LED_PIN 2 + +class StatusBlink +{ +private: + Ticker flipper; + +public: + enum BlinkRate { + RateAlwaysOn, + Rate8Hz, + Rate2Hz, + Rate0_5Hz, + RateAlwaysOff, + }; + StatusBlink(); + void SetBlinkRate(BlinkRate rate); +}; \ No newline at end of file