Initial commit

This commit is contained in:
2021-01-03 17:12:47 +01:00
commit 3290c7e794
15 changed files with 293 additions and 0 deletions

70
src/main.cpp Normal file
View File

@ -0,0 +1,70 @@
#include <Arduino.h>
#include <FastLED.h>
#include "config.h"
#include "tools.h"
#include "node.h"
#include "edge.h"
#include "corner.h"
#include "prototypes.h"
std::list<Node*> nodes;
std::list<Edge*> edges;
std::list<Corner*> corners;
CRGB leds[LED_COUNT];
void setup_layout() {
LOGln("Setting up layout...");
uint8_t layout[] = LAYOUT;
Node* current_node = new Node();
nodes.push_back(current_node);
for(uint16_t i=0; i<NODE_COUNT-1; i++) {
current_node = current_node->create_neighbour(layout[i]);
nodes.push_back(current_node);
}
for(Node* node: nodes) {
for(Edge* edge: node->edges) {
//LOGln("Edge #%d: %p", i, edge);
auto e = std::find(edges.begin(), edges.end(), edge);
if (e == edges.end()) {
edges.push_back(edge);
}
}
for(Corner* corner: node->corners) {
//LOGln("Corner #%d: %p", i, corner);
auto c = std::find(corners.begin(), corners.end(), corner);
if (c == corners.end()) {
corners.push_back(corner);
}
}
}
LOGln("Counts:");
LOGln("Nodes: %3d", nodes.size());
LOGln("Edges: %3d", edges.size());
LOGln("Corners: %3d", corners.size());
}
void setup_fastled() {
LOGln("Setting up FastLED...");
// GPIO5 = D1
// GPIO2 = D4
FastLED.addLeds<WS2812B, 5, GRB>(leds, LEDS_PER_CORNER * CORNERS_PER_PART * NODE_COUNT).setCorrection(TypicalLEDStrip);
LOGln("LEDs: %3d", LED_COUNT);
FastLED.setBrightness(255);
set_all_leds(CRGB(0xFF));
}
void setup() {
Serial.begin(74880);
LOGln("ESPleaf starting.");
setup_layout();
setup_fastled();
}
void loop() {
// put your main code here, to run repeatedly:
}

22
src/node.cpp Normal file
View File

@ -0,0 +1,22 @@
#include "node.h"
Node::Node() {
for(int i=0; i<CORNERS_PER_PART; i++) {
edges[i] = new Edge();
corners[i] = new Corner();
}
}
Node* Node::create_neighbour(uint8_t edge) {
Node* node = new Node();
node->neighbours[0] = this;
neighbours[edge] = node;
delete node->edges[0];
node->edges[0] = this->edges[edge];
delete node->corners[0];
node->corners[0] = this->corners[(edge-1) % CORNERS_PER_PART];
delete node->corners[CORNERS_PER_PART-1];
node->corners[CORNERS_PER_PART-1] = this->corners[edge];
return node;
}

11
src/tools.cpp Normal file
View File

@ -0,0 +1,11 @@
#include "tools.h"
#include "prototypes.h"
#include "config.h"
void clear_leds() {
set_all_leds(CRGB::Black);
}
void set_all_leds(CRGB color) {
FastLED.showColor(color);
}