Ansteuerung Panel in externe Klasse ausgelagert

This commit is contained in:
enny 2019-12-13 19:24:04 +01:00
parent 815bebd1fa
commit db9f11f5ee

View File

@ -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");
}
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);
}
}