添加状态指示灯功能

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

View File

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

View File

@ -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()

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