#include #include #include "config.h" #include "tools.h" #include "node.h" #include "edge.h" #include "corner.h" #include "prototypes.h" std::list nodes; std::list edges; std::vector corners; CRGB leds[LED_COUNT]; bool looping; void setup_layout() { LOGln("Setting up layout..."); uint8_t layout[] = LAYOUT; Node* current_node = new Node(0); nodes.push_back(current_node); for(uint16_t i=0; icreate_neighbour(layout[i]); nodes.push_back(current_node); } for(Node* node: nodes) { for(Edge* edge: node->edges) { auto e = std::find(edges.begin(), edges.end(), edge); if (e == edges.end()) { edges.push_back(edge); } } /*for(Corner* corner: node->corners) { auto c = std::find(corners.begin(), corners.end(), corner); if (c == corners.end()) { corners.push_back(corner); } }*/ } for(Corner* corner: corners) { LOGln("Corner %p:", corner); for(auto c: corner->_long_neighbours) { LOGln(" Long: %p", c); } for(auto c: corner->_short_neighbours) { LOGln(" Short: %p", c); } } 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(leds, LEDS_PER_CORNER * CORNERS_PER_PART * NODE_COUNT).setCorrection(TypicalLEDStrip); LOGln("LEDs: %3d", LED_COUNT); FastLED.setBrightness(255); set_all_leds(CRGB::Black); } void setup() { Serial.begin(74880); LOGln("ESPleaf starting."); setup_layout(); setup_fastled(); } void loop() { // put your main code here, to run repeatedly: EVERY_N_MILLISECONDS(20) { looping = false; for(Corner* corner: corners) { looping = corner->loop() || looping; } FastLED.show(); /*if (!looping) { LOGln("corners.size(): %d", corners.size()); uint16_t cid = random16(corners.size()); LOGln("cid: %d", cid); Corner* start = corners[cid]; start->blend_to(CHSV(random8(), 255, 255)); }*/ if (random8()==42) { corners[random16(corners.size())]->blend_to(CHSV(random8(), 255, 255)); } } }