#include "Strip.h"
//#include "Stack.h"
#include "Moodlight.h"
#include "ws2812b.h"
#define STRIP_DATA_PIN 2
class StripView {
public:
uint8_t pin;
Strip* strip;
StripView(uint8_t pin, Strip* strip) {
this->pin = pin;
this->strip = strip;
}
void begin() {
}
void update() {
uint8_t buf[strip->length * 3];
for (int i = 0; i < strip->length; i++) {
uint32_t p = strip->pixels[i];
buf[i * 3] = (p >> 8) & 0xFF; // G
buf[i * 3 + 1] = (p >> 16) & 0xFF; // R
buf[i * 3 + 2] = p & 0xFF; // B
}
ws2812b_write(buf, strip->length * 3);
delayMicroseconds(60);
}
};
System* sys;
StripView* stripView;
//Stack* stack;
Moodlight* moodlight;
void setup() {
sys = new System();
//Serial.begin(115200);
pinMode(STRIP_DATA_PIN, OUTPUT);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(A0, INPUT_PULLUP);
pinMode(A1, INPUT_PULLUP);
pinMode(A2, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
pinMode(A4, INPUT_PULLUP);
pinMode(A5, INPUT_PULLUP);
stripView = new StripView(STRIP_DATA_PIN, sys->strip);
stripView->begin();
//stack = new Stack(sys);
moodlight = new Moodlight(sys);
sys->game = moodlight;
sys->strip->testPattern();
}
void loop() {
// return;
sys->loop();
sys->controllers[0]->buttonPause.process(!digitalRead(2));
sys->controllers[0]->buttonMenu.process(!digitalRead(3));
sys->controllers[0]->buttonA.process(!digitalRead(4));
sys->controllers[0]->buttonB.process(!digitalRead(5));
sys->controllers[0]->buttonC.process(!digitalRead(6));
sys->controllers[0]->buttonD.process(!digitalRead(7));
sys->controllers[1]->buttonPause.process(!digitalRead(A0));
sys->controllers[1]->buttonMenu.process(!digitalRead(A1));
sys->controllers[1]->buttonA.process(!digitalRead(A2));
sys->controllers[1]->buttonB.process(!digitalRead(A3));
sys->controllers[1]->buttonC.process(!digitalRead(A4));
sys->controllers[1]->buttonD.process(!digitalRead(A5));
stripView->update();
delay(1);
}