initial commit
This commit is contained in:
114
ROFLS_Arena_LED_Strip_Clock/LED_Driving_functions.ino
Normal file
114
ROFLS_Arena_LED_Strip_Clock/LED_Driving_functions.ino
Normal file
@@ -0,0 +1,114 @@
|
||||
// contains all the functions to drive the LEDs
|
||||
|
||||
// 0
|
||||
const int LitArray0 [] = {8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55};
|
||||
// 1
|
||||
const int LitArray1 [] = {8,9,10,11,12,13,14,15,48,49,50,51,52,53,54,55};
|
||||
// 2
|
||||
const int LitArray2 [] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47};
|
||||
// 3
|
||||
const int LitArray3 [] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55};
|
||||
// 4
|
||||
const int LitArray4 [] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31,48,49,50,51,52,53,54,55};
|
||||
// 5
|
||||
const int LitArray5 [] = {0,1,2,3,4,5,6,7,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55};
|
||||
// 6
|
||||
const int LitArray6 [] = {0,1,2,3,4,5,6,7,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55};
|
||||
// 7
|
||||
const int LitArray7 [] = {8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,48,49,50,51,52,53,54,55};
|
||||
// 8
|
||||
const int LitArray8 [] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55};
|
||||
// 9
|
||||
const int LitArray9 [] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55};
|
||||
// colon
|
||||
const int COLONArray [] = {224,225,226,227,228,229,230,231};
|
||||
|
||||
// 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) {
|
||||
DIGIT_ID = map(DIGIT_ID, 1, 4, 0, 3); // swap index/ID number from 1-4 to 0-3
|
||||
switch (DIGIT) {
|
||||
case 0:
|
||||
// set 0
|
||||
for (int i : LitArray0) {
|
||||
leds_TIMER[i + (NUM_LEDS_PER_DIGIT * DIGIT_ID )].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
// set 1
|
||||
for (int i : LitArray1) {
|
||||
leds_TIMER[i + (NUM_LEDS_PER_DIGIT * DIGIT_ID )].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
// set 2
|
||||
for (int i : LitArray2) {
|
||||
leds_TIMER[i + (NUM_LEDS_PER_DIGIT * DIGIT_ID )].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
// set 3
|
||||
for (int i : LitArray3) {
|
||||
leds_TIMER[i + (NUM_LEDS_PER_DIGIT * DIGIT_ID )].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
// set 4
|
||||
for (int i : LitArray4) {
|
||||
leds_TIMER[i + (NUM_LEDS_PER_DIGIT * DIGIT_ID )].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
// set 5
|
||||
for (int i : LitArray5) {
|
||||
leds_TIMER[i + (NUM_LEDS_PER_DIGIT * DIGIT_ID )].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
// set 6
|
||||
for (int i : LitArray6) {
|
||||
leds_TIMER[i + (NUM_LEDS_PER_DIGIT * DIGIT_ID )].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
// set 7
|
||||
for (int i : LitArray7) {
|
||||
leds_TIMER[i + (NUM_LEDS_PER_DIGIT * DIGIT_ID )].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
// set 8
|
||||
for (int i : LitArray8) {
|
||||
leds_TIMER[i + (NUM_LEDS_PER_DIGIT * DIGIT_ID )].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
// set 9
|
||||
for (int i : LitArray9) {
|
||||
leds_TIMER[i + (NUM_LEDS_PER_DIGIT * DIGIT_ID )].setRGB(RED,GREEN,BLUE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// set colon
|
||||
void setCOLON(int RED, int GREEN, int BLUE) {
|
||||
for (int i : COLONArray) {
|
||||
leds_TIMER[(i)].setRGB(RED,GREEN,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);
|
||||
// actually display the digits
|
||||
FastLED.show(BRIGHTNESS);
|
||||
// clear the arrays
|
||||
FastLED.clearData();
|
||||
}
|
||||
|
||||
71
ROFLS_Arena_LED_Strip_Clock/ROFLS_Arena_LED_Strip_Clock.ino
Normal file
71
ROFLS_Arena_LED_Strip_Clock/ROFLS_Arena_LED_Strip_Clock.ino
Normal file
@@ -0,0 +1,71 @@
|
||||
// ROFLS+ Arena Controller
|
||||
|
||||
#include <WiFi.h>
|
||||
#include <esp_now.h> // automatically installed for ESP32 boards, I think?
|
||||
#include <Preferences.h> // automatically installed for ESP32 boards
|
||||
#include <FastLED.h> // https://fastled.io/
|
||||
|
||||
// LED Strip setup
|
||||
#define NUM_LEDS_PER_DIGIT 56
|
||||
#define NUM_OF_DIGITS 4
|
||||
#define NUM_LEDS_COLON 8
|
||||
#define NUM_LEDS_TIMER (NUM_LEDS_PER_DIGIT * NUM_OF_DIGITS + NUM_LEDS_COLON) // + 1 because of the makeshift Levelshifter
|
||||
#define LED_DATA_PIN_TIMER 16
|
||||
// This is an array of leds. One item for each led in your strip.
|
||||
CRGB leds_TIMER[NUM_LEDS_TIMER];
|
||||
|
||||
// ESP-NOW config
|
||||
|
||||
// Structure example to send data
|
||||
// Must match the receiver structure
|
||||
typedef struct struct_message {
|
||||
int receiveMinutes;
|
||||
int receiveSeconds;
|
||||
int receiveREDchannel;
|
||||
int receiveGREENchannel;
|
||||
int receiveBLUEchannel;
|
||||
int receiveBrightness;
|
||||
} struct_message;
|
||||
|
||||
// Create a struct_message called remoteDATA
|
||||
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));
|
||||
}
|
||||
|
||||
void setup() {
|
||||
// Set device as a Wi-Fi Station
|
||||
WiFi.mode(WIFI_STA);
|
||||
|
||||
// Init ESP-NOW
|
||||
if (esp_now_init() != ESP_OK) {
|
||||
Serial.println("Error initializing ESP-NOW");
|
||||
return;
|
||||
}
|
||||
// Once ESPNow is successfully Init, we will register for recv CB to
|
||||
// get recv packer info
|
||||
esp_now_register_recv_cb(esp_now_recv_cb_t(OnDataRecv));
|
||||
|
||||
// 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.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;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user