Replaced FastLED by Adafruit Neopixel
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
#include <ESP8266WiFi.h>
|
||||
#include <ArduinoOTA.h>
|
||||
|
||||
#include <FastLED.h>
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
#include <Ticker.h>
|
||||
|
||||
#include "common.h"
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "gps.h"
|
||||
#endif
|
||||
#include "dtc.h"
|
||||
#include "led_colors.h"
|
||||
|
||||
#ifdef FEATURE_ENABLE_WIFI_CLIENT
|
||||
#include <ESP8266WiFiMulti.h>
|
||||
@@ -39,11 +40,11 @@ ESP8266WiFiMulti wifiMulti;
|
||||
bool startSetupMode = false;
|
||||
volatile uint32_t wheel_pulse = 0;
|
||||
|
||||
CRGB leds[1];
|
||||
Adafruit_NeoPixel leds(1, GPIO_LED, NEO_RGB + NEO_KHZ800);
|
||||
|
||||
// Function-Prototypes
|
||||
void IRAM_ATTR trigger_ISR();
|
||||
void LED_Process(uint8_t override = false, CRGB setColor = CRGB::White);
|
||||
void LED_Process(uint8_t override = false, uint32_t setColor = LED_DEFAULT_COLOR);
|
||||
#ifdef FEATURE_ENABLE_OLED
|
||||
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(-1);
|
||||
void Display_Process();
|
||||
@@ -88,7 +89,7 @@ void setup()
|
||||
u8x8.begin();
|
||||
u8x8.setFont(u8x8_font_chroma48medium8_r);
|
||||
#endif
|
||||
FastLED.addLeds<WS2811, GPIO_LED, RGB>(leds, 1); // GRB ordering is assumed
|
||||
leds.begin();
|
||||
|
||||
switch (LubeConfig.SpeedSource)
|
||||
{
|
||||
@@ -251,7 +252,7 @@ void trigger_ISR()
|
||||
wheel_pulse++;
|
||||
}
|
||||
|
||||
void LED_Process(uint8_t override, CRGB SetColor)
|
||||
void LED_Process(uint8_t override, uint32_t SetColor)
|
||||
{
|
||||
typedef enum
|
||||
{
|
||||
@@ -267,11 +268,12 @@ void LED_Process(uint8_t override, CRGB SetColor)
|
||||
|
||||
static tSystem_Status oldSysStatus = sysStat_Startup;
|
||||
static tLED_Status LED_Status = LED_Startup;
|
||||
static CRGB LED_override_color = 0;
|
||||
static uint32_t LED_override_color = 0;
|
||||
static tLED_Status LED_ResumeOverrideStatus = LED_Startup;
|
||||
|
||||
uint8_t color = 0;
|
||||
uint32_t timer = 0;
|
||||
uint32_t animtimer = 0;
|
||||
static uint32_t timestamp = 0;
|
||||
timer = millis();
|
||||
|
||||
@@ -331,84 +333,91 @@ void LED_Process(uint8_t override, CRGB SetColor)
|
||||
switch (LED_Status)
|
||||
{
|
||||
case LED_Startup:
|
||||
FastLED.setBrightness(255);
|
||||
leds.setBrightness(LubeConfig.LED_Max_Brightness);
|
||||
|
||||
if (globals.TankPercentage < LubeConfig.TankRemindAtPercentage)
|
||||
leds[0] = CRGB::OrangeRed;
|
||||
leds.setPixelColor(0, LED_STARTUP_TANKWARN);
|
||||
else
|
||||
leds[0] = CRGB::White;
|
||||
leds.setPixelColor(0, LED_STARTUP_NORMAL);
|
||||
break;
|
||||
|
||||
case LED_Confirm_Normal:
|
||||
FastLED.setBrightness(255);
|
||||
leds[0] = timer % 250 > 125 ? CRGB(0, 255, 0) : CRGB(0, 4, 0);
|
||||
animtimer = timer % 500;
|
||||
color = map(animtimer / 2, 0, 250, 0, LubeConfig.LED_Max_Brightness);
|
||||
leds.setPixelColor(0, LED_NORMAL_COLOR);
|
||||
if (animtimer < 250)
|
||||
leds.setBrightness(color);
|
||||
else
|
||||
leds.setBrightness(LubeConfig.LED_Max_Brightness - color);
|
||||
|
||||
if (timestamp < timer)
|
||||
{
|
||||
LED_Status = LED_Normal;
|
||||
FastLED.setBrightness(64);
|
||||
Debug_pushMessage("LED_Status: Confirm -> Normal");
|
||||
}
|
||||
break;
|
||||
|
||||
case LED_Normal:
|
||||
#ifndef NO_MODE_FLASH
|
||||
if (timer % 2000 > 1950)
|
||||
leds[0] = CRGB(0, 255, 0);
|
||||
else if (WiFi.getMode() != WIFI_OFF && timer % 2000 > 1800 && timer % 2000 < 1850)
|
||||
#else
|
||||
if (WiFi.getMode() != WIFI_OFF && timer % 2000 > 1950)
|
||||
#endif
|
||||
leds[0] = CRGB(255, 128, 0);
|
||||
else
|
||||
leds[0] = CRGB(0, 4, 0);
|
||||
leds.setBrightness(LubeConfig.LED_Min_Brightness);
|
||||
leds.setPixelColor(0, LED_NORMAL_COLOR);
|
||||
|
||||
if (timer % 2000 > 1950 && LubeConfig.LED_Mode_Flash == true)
|
||||
leds.setBrightness(LubeConfig.LED_Max_Brightness);
|
||||
else if (timer % 2000 > 1500 && WiFi.getMode() != WIFI_OFF)
|
||||
leds.setPixelColor(0, LED_WIFI_BLINK);
|
||||
|
||||
break;
|
||||
|
||||
case LED_Confirm_Rain:
|
||||
FastLED.setBrightness(255);
|
||||
leds[0] = timer % 250 > 125 ? CRGB(0, 0, 255) : CRGB(0, 0, 4);
|
||||
animtimer = timer % 500;
|
||||
color = map(animtimer / 2, 0, 250, 0, LubeConfig.LED_Max_Brightness);
|
||||
leds.setPixelColor(0, LED_RAIN_COLOR);
|
||||
if (animtimer < 250)
|
||||
leds.setBrightness(color);
|
||||
else
|
||||
leds.setBrightness(LubeConfig.LED_Max_Brightness - color);
|
||||
if (timestamp < timer)
|
||||
{
|
||||
LED_Status = LED_Rain;
|
||||
FastLED.setBrightness(64);
|
||||
Debug_pushMessage("LED_Status: Confirm -> Rain");
|
||||
}
|
||||
break;
|
||||
|
||||
case LED_Rain:
|
||||
#ifndef NO_MODE_FLASH
|
||||
if (timer % 2000 > 1950)
|
||||
leds[0] = CRGB(0, 0, 255);
|
||||
else if (WiFi.getMode() != WIFI_OFF && timer % 2000 > 1800 && timer % 2000 < 1850)
|
||||
#else
|
||||
if (WiFi.getMode() != WIFI_OFF && timer % 2000 > 1950)
|
||||
#endif
|
||||
leds[0] = CRGB(255, 128, 0);
|
||||
else
|
||||
leds[0] = CRGB(0, 0, 4);
|
||||
leds.setBrightness(LubeConfig.LED_Min_Brightness);
|
||||
leds.setPixelColor(0, LED_RAIN_COLOR);
|
||||
|
||||
if (timer % 2000 > 1950 && LubeConfig.LED_Mode_Flash == true)
|
||||
leds.setBrightness(LubeConfig.LED_Max_Brightness);
|
||||
else if (timer % 2000 > 1500 && WiFi.getMode() != WIFI_OFF)
|
||||
leds.setPixelColor(0, LED_WIFI_BLINK);
|
||||
|
||||
break;
|
||||
|
||||
case LED_Purge:
|
||||
timer = timer % 500;
|
||||
color = timer / 2;
|
||||
leds[0] = CRGB::DeepPink;
|
||||
color = map(timer / 2, 0, 250, LubeConfig.LED_Min_Brightness, LubeConfig.LED_Max_Brightness);
|
||||
leds.setPixelColor(0, LED_PURGE_COLOR);
|
||||
if (timer < 250)
|
||||
FastLED.setBrightness(color);
|
||||
leds.setBrightness(color);
|
||||
else
|
||||
FastLED.setBrightness(250 - color);
|
||||
leds.setBrightness(LubeConfig.LED_Max_Brightness - color);
|
||||
break;
|
||||
|
||||
case LED_Error:
|
||||
leds[0] = timer % 500 > 250 ? CRGB::Red : CRGB::Black;
|
||||
leds.setBrightness(LubeConfig.LED_Max_Brightness);
|
||||
leds.setPixelColor(0, timer % 500 > 250 ? LED_ERROR_BLINK : 0);
|
||||
break;
|
||||
|
||||
case LED_Override:
|
||||
leds[0] = LED_override_color;
|
||||
leds.setBrightness(LubeConfig.LED_Max_Brightness);
|
||||
leds.setPixelColor(0, LED_override_color);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
FastLED.show();
|
||||
leds.show();
|
||||
}
|
||||
#ifdef FEATURE_ENABLE_OLED
|
||||
void Display_Process()
|
||||
@@ -472,22 +481,22 @@ void Button_Process()
|
||||
|
||||
if (buttonTimestamp + BUTTON_ACTION_DELAY_NOTHING < millis())
|
||||
{
|
||||
LED_Process(1, CRGB::White);
|
||||
LED_Process(1, COLOR_WARM_WHITE);
|
||||
buttonAction = BTN_NOTHING;
|
||||
}
|
||||
else if (buttonTimestamp + BUTTON_ACTION_DELAY_WIFI < millis())
|
||||
{
|
||||
LED_Process(1, CRGB::Yellow);
|
||||
LED_Process(1, LED_WIFI_BLINK);
|
||||
buttonAction = BTN_TOGGLEWIFI;
|
||||
}
|
||||
else if (buttonTimestamp + BUTTON_ACTION_DELAY_PURGE < millis())
|
||||
{
|
||||
LED_Process(1, CRGB::DeepPink);
|
||||
LED_Process(1, LED_PURGE_COLOR);
|
||||
buttonAction = BTN_STARTPURGE;
|
||||
}
|
||||
else if (buttonTimestamp + BUTTON_ACTION_DELAY_TOGGLEMODE < millis())
|
||||
{
|
||||
CRGB color = globals.systemStatus == sysStat_Normal ? CRGB::Blue : CRGB::Green;
|
||||
uint32_t color = globals.systemStatus == sysStat_Normal ? LED_RAIN_COLOR : LED_NORMAL_COLOR;
|
||||
LED_Process(1, color);
|
||||
buttonAction = BTN_TOGGLEMODE;
|
||||
}
|
||||
|
Reference in New Issue
Block a user