添加状态指示灯功能

This commit is contained in:
Villivateur Von 2021-08-29 17:00:30 +08:00
parent a5666f2a00
commit ed7d1450a6
5 changed files with 67 additions and 12 deletions

View File

@ -1,19 +1,18 @@
#include "client_network.h" #include "client_network.h"
#include "status_blink.h"
void ClientNetwork::Init() extern StatusBlink* statusLed;
ClientNetwork::ClientNetwork()
{ {
WiFi.begin("VVAILL", "channy161021"); WiFi.begin("VVAILL", "channy161021");
Serial.print("Connecting"); statusLed->SetBlinkRate(StatusBlink::BlinkRate::Rate2Hz);
while (WiFi.status() != WL_CONNECTED) while (WiFi.status() != WL_CONNECTED)
{ {
delay(500); delay(500);
Serial.print(".");
} }
Serial.println(); statusLed->SetBlinkRate(StatusBlink::BlinkRate::RateAlwaysOff);
Serial.print("Connected, IP address: ");
Serial.println(WiFi.localIP());
status = FAIL; status = FAIL;
} }

View File

@ -12,7 +12,7 @@ private:
STATUS status; STATUS status;
public: public:
void Init(); ClientNetwork();
STATUS FetchNewData(); STATUS FetchNewData();
uint8_t GetPercent(String name); uint8_t GetPercent(String name);
uint32_t GetRate(String name); uint32_t GetRate(String name);

View File

@ -2,18 +2,17 @@
#include "display.h" #include "display.h"
#include "client_network.h" #include "client_network.h"
#include "monitor_items.h" #include "monitor_items.h"
#include "status_blink.h"
DisplayPanel* displayPanel; DisplayPanel* displayPanel;
ClientNetwork* netClient; ClientNetwork* netClient;
StatusBlink* statusLed;
void setup() void setup()
{ {
Serial.begin(115200); statusLed = new StatusBlink();
Serial.println();
displayPanel = new DisplayPanel(); displayPanel = new DisplayPanel();
netClient = new ClientNetwork(); netClient = new ClientNetwork();
netClient->Init();
} }
void loop() void loop()

36
src/status_blink.cpp Normal file
View File

@ -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;
}
}

21
src/status_blink.h Normal file
View File

@ -0,0 +1,21 @@
#include <Arduino.h>
#include <Ticker.h>
#define STATUS_LED_PIN 2
class StatusBlink
{
private:
Ticker flipper;
public:
enum BlinkRate {
RateAlwaysOn,
Rate8Hz,
Rate2Hz,
Rate0_5Hz,
RateAlwaysOff,
};
StatusBlink();
void SetBlinkRate(BlinkRate rate);
};