added tap out to the display firmware, added a test firmware for sending to the display via ESP-NOW
This commit is contained in:
@@ -23,6 +23,10 @@ const int LitArray9 [] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,2
|
||||
// colon
|
||||
const int COLONArray [] = {224,225,226,227,228,229,230,231};
|
||||
|
||||
// tap out
|
||||
const int LitArrayTap [] = {0,1,2,3,4,5,6,7,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151};
|
||||
const int LitArrayOut [] = {0,1,2,3,4,5,6,7,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159};
|
||||
|
||||
// set digits of the timer/clock, use: setDIGIT(<digit ID>, <Number>, <red channel intensity 0-255>, <green channel intensity 0-255>, <blue channel intensity 0-255>)
|
||||
|
||||
void setDIGIT(int DIGIT_ID, int DIGIT, int RED, int GREEN, int BLUE) {
|
||||
@@ -98,14 +102,23 @@ void setCOLON(int RED, int GREEN, int BLUE) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void showTimeDisplay(int MINUTES, int SECONDS, int RED, int GREEN, int BLUE, int BRIGHTNESS) {
|
||||
// set all digits
|
||||
setDIGIT(1, ((MINUTES/10)%10), RED, GREEN, BLUE);
|
||||
setDIGIT(2, (MINUTES%10), RED, GREEN, BLUE);
|
||||
setDIGIT(3, ((SECONDS/10)%10), RED, GREEN, BLUE);
|
||||
setDIGIT(4, (SECONDS%10), RED, GREEN, BLUE);
|
||||
setCOLON(RED, GREEN, BLUE);
|
||||
if (MINUTES == 99) {
|
||||
for (int i : LitArrayTap) {
|
||||
leds_TIMER[i].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
} else if (SECONDS == 99) {
|
||||
for (int i : LitArrayOut) {
|
||||
leds_TIMER[i].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
} else {
|
||||
setDIGIT(1, ((MINUTES/10)%10), RED, GREEN, BLUE);
|
||||
setDIGIT(2, (MINUTES%10), RED, GREEN, BLUE);
|
||||
setDIGIT(3, ((SECONDS/10)%10), RED, GREEN, BLUE);
|
||||
setDIGIT(4, (SECONDS%10), RED, GREEN, BLUE);
|
||||
setCOLON(RED, GREEN, BLUE);
|
||||
}
|
||||
// actually display the digits
|
||||
FastLED.show(BRIGHTNESS);
|
||||
// clear the arrays
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
// ROFLS+ Arena Controller
|
||||
|
||||
// MAC address of the MCU:
|
||||
// 48:27:E2:50:86:84
|
||||
|
||||
#include <WiFi.h>
|
||||
#include <esp_now.h> // automatically installed for ESP32 boards, I think?
|
||||
#include <Preferences.h> // automatically installed for ESP32 boards
|
||||
@@ -33,6 +36,7 @@ struct_message receiveDATA;
|
||||
// callback function that will be executed when data is received
|
||||
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
|
||||
memcpy(&receiveDATA, incomingData, sizeof(receiveDATA));
|
||||
showTimeDisplay(receiveDATA.receiveMinutes, receiveDATA.receiveSeconds, receiveDATA.receiveREDchannel, receiveDATA.receiveGREENchannel, receiveDATA.receiveBLUEchannel, receiveDATA.receiveBrightness);
|
||||
}
|
||||
|
||||
void setup() {
|
||||
@@ -51,21 +55,16 @@ void setup() {
|
||||
// sanity check delay - allows reprogramming if accidently blowing power w/leds
|
||||
delay(2000);
|
||||
// This function sets up the leds and tells the controller about them
|
||||
FastLED.addLeds<WS2811Controller800Khz, LED_DATA_PIN_TIMER, GRB>(leds_TIMER, NUM_LEDS_TIMER); // GRB ordering is typical
|
||||
//FastLED.addLeds<WS2811Controller800Khz, LED_DATA_PIN_TIMER, GRB>(leds_TIMER, NUM_LEDS_TIMER); // GRB ordering is typical
|
||||
FastLED.addLeds<WS2812B, LED_DATA_PIN_TIMER, GRB>(leds_TIMER, NUM_LEDS_TIMER); // GRB ordering is typical
|
||||
//FastLED.setMaxRefreshRate(10, true);
|
||||
FastLED.setMaxPowerInVoltsAndMilliamps(5,2000); // Limit to 10W of output power
|
||||
|
||||
// set default values
|
||||
receiveDATA.receiveMinutes = 12;
|
||||
receiveDATA.receiveSeconds = 34;
|
||||
receiveDATA.receiveREDchannel = 128;
|
||||
receiveDATA.receiveGREENchannel = 128;
|
||||
receiveDATA.receiveBLUEchannel = 128;
|
||||
receiveDATA.receiveBrightness = 16;
|
||||
// default screen, just to show it's up and running but hasn't received any data, should display 00:00 in blue
|
||||
showTimeDisplay(0, 0, 0, 0, 255, 32);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// update the LED Display
|
||||
showTimeDisplay(receiveDATA.receiveMinutes, receiveDATA.receiveSeconds, receiveDATA.receiveREDchannel, receiveDATA.receiveGREENchannel, receiveDATA.receiveBLUEchannel, receiveDATA.receiveBrightness);
|
||||
// showTimeDisplay(12, 34, 150, 0, 150, 16);
|
||||
// nothing to see here, everything get's handled by the callback function
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user