diff --git a/LED-Board.ino b/LED-Board.ino index 521206b..5769b2d 100644 --- a/LED-Board.ino +++ b/LED-Board.ino @@ -3,16 +3,11 @@ #include "src/WebSocketsServer.h" #include "src/image.hpp" +#include "src/panel.hpp" #include "src/ProtocolDL.hpp" #define USE_SERIAL Serial - -#define LOAD 7 -#define DATA 8 -#define CLOCK 9 - - byte mac[] = { 0xBE, 0xB7, 0x5C, 0x30, 0xC3, 0x04 }; IPAddress ip(10, 23, 42, 24); IPAddress router(10, 23, 42, 1); @@ -21,6 +16,7 @@ IPAddress subnet(255, 255, 254, 0); WebSocketsServer webSocket = WebSocketsServer(81); Image image; +Panel panel; ProtocolDL protocol = ProtocolDL(image); unsigned long last_activity = 0; @@ -77,7 +73,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length if(protocol.isComplete()) { Serial.println("complete"); - send_image(&image); + panel.send_image(&image); } break; @@ -110,82 +106,12 @@ void setup() { webSocket.begin(); webSocket.onEvent(webSocketEvent); - pinMode(DATA, OUTPUT); - pinMode(CLOCK, OUTPUT); - pinMode(LOAD, OUTPUT); + panel.init(); - Serial.println("setup done"); + Serial.println("setup done"); } -void send_block(Image* p, int x, int y) { - int order[32][2] = { - { 1, 1 }, // 1 - { 1, 0 }, // 2 - { 0, 1 }, // 3 - { 1, 2 }, // 4 - { 0, 2 }, // 5 - { 1, 3 }, // 6 - { 0, 0 }, // 7 - { 0, 3 }, // 8 - { 0, 4 }, // 9 - { 1, 4 }, // 10 - { 0, 5 }, // 11 - { 1, 7 }, // 12 - { 1, 5 }, // 13 - { 0, 6 }, // 14 - { 1, 6 }, // 15 - { 0, 7 }, // 16 - { 3, 7 }, // 17 - { 2, 6 }, // 18 - { 2, 7 }, // 19 - { 3, 6 }, // 20 - { 2, 5 }, // 21 - { 3, 5 }, // 22 - { 3, 4 }, // 23 - { 2, 4 }, // 24 - { 3, 3 }, // 25 - { 2, 0 }, // 26 - { 3, 0 }, // 27 - { 2, 3 }, // 28 - { 3, 2 }, // 29 - { 2, 1 }, // 30 - { 3, 1 }, // 31 - { 2, 2 }, // 32 - }; - - for (int n = 0; n < 32; n++) { - int x_offset = order[n][0]; - int y_offset = order[n][1]; - - byte pixel = p->get_pixel(x + x_offset, y + y_offset); - digitalWrite(DATA, pixel); - clock(); - } - - // 33 bit - kein pixel - senden - clock(); -} - -void send_image(Image* img) { - for (int y = 0; y < MAX_HEIGHT; y += 8) { - for (int x = 0; x < MAX_WIDTH; x += 4) { - send_block(img, x, y); - } - } - - load(); -} - -void clock() { - digitalWrite(CLOCK, HIGH); - digitalWrite(CLOCK, LOW); -} - -void load() { - digitalWrite(LOAD, HIGH); - digitalWrite(LOAD, LOW); -} // 0x00 0x00 0x00 0x00 0x00 0x00 0x00... // Width Height Delay Pixel @@ -213,6 +139,6 @@ void loop() { if (someOneIsConnected == false) { default_image(&image); - send_image(&image); + panel.send_image(&image); } }