Extended Panel class for multiple panels

This commit is contained in:
frubi 2019-12-14 00:40:23 +01:00
parent c6866a24b4
commit 1a6bb33b98
4 changed files with 21 additions and 7 deletions

View File

@ -16,8 +16,8 @@ IPAddress subnet(255, 255, 254, 0);
WebSocketsServer webSocket = WebSocketsServer(81);
Image image;
Panel panel1(22, 24, 23); //data, clock, load
Panel panel2(28, 29, 31);
Panel panel1(22, 24, 23, 0 * PANEL_WIDTH, 0 * PANEL_HEIGHT); //data, clock, load
Panel panel2(28, 29, 31, 1 * PANEL_WIDTH, 0 * PANEL_HEIGHT);
ProtocolDL protocol = ProtocolDL(image);
unsigned long last_activity = 0;

View File

@ -3,7 +3,7 @@
#include <Arduino.h>
#define MAX_WIDTH 32
#define MAX_WIDTH 64
#define MAX_HEIGHT 40
class Image

View File

@ -1,10 +1,13 @@
#include "panel.hpp"
Panel::Panel(uint8_t pData, uint8_t pClock, uint8_t pLoad)
Panel::Panel(uint8_t pData, uint8_t pClock, uint8_t pLoad, int x, int y)
{
pinData = pData;
pinLoad = pLoad;
pinClock = pClock;
posX = x;
posY = y;
}
void Panel::init()
@ -15,8 +18,11 @@ void Panel::init()
}
void Panel::send_image(Image* img) {
for (int y = 0; y < MAX_HEIGHT; y += 8) {
for (int x = 0; x < MAX_WIDTH; x += 4) {
int endY = posY + PANEL_HEIGHT;
int endX = posX + PANEL_WIDTH;
for (int y = posY; y < endY; y += 8) {
for (int x = posX; x < endX; x += 4) {
send_block(img, x, y);
}
}

View File

@ -3,10 +3,13 @@
#include "image.hpp"
#define PANEL_WIDTH 32
#define PANEL_HEIGHT 40
class Panel
{
public:
Panel(uint8_t pData, uint8_t pClock, uint8_t pLoad);
Panel(uint8_t pData, uint8_t pClock, uint8_t pLoad, int x, int y);
void init();
void send_image(Image* img);
@ -14,9 +17,14 @@ class Panel
void clock();
void load();
void send_block(Image* p, int x, int y);
uint8_t pinData;
uint8_t pinClock;
uint8_t pinLoad;
// position of panel in image
int posX;
int posY;
};
#endif