132 lines
5.2 KiB
Arduino
132 lines
5.2 KiB
Arduino
#include <Adafruit_NeoPixel.h>
|
|
#include <WiFi.h>
|
|
#include <WebServer.h>
|
|
#include <ArduinoJson.h>
|
|
#include "index.h"
|
|
#include "fonts.h"
|
|
|
|
#ifdef __AVR__
|
|
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
|
|
#endif
|
|
|
|
#define PIN 12
|
|
|
|
#define PANEL_PIXEL_COUNT 16
|
|
#define NUMPIXELS PANEL_PIXEL_COUNT*PANEL_PIXEL_COUNT
|
|
|
|
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
|
|
|
|
unsigned char saved_images_count = 0;
|
|
|
|
uint32_t saved_imaged[12][16][16] = {
|
|
{
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
|
},
|
|
{
|
|
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
void setPixel(unsigned short y, unsigned short x, uint32_t color)
|
|
{
|
|
if (y % 2 == 1)
|
|
{
|
|
x = PANEL_PIXEL_COUNT - 1 - x;
|
|
}
|
|
pixels.setPixelColor(x + (y * PANEL_PIXEL_COUNT), color);
|
|
}
|
|
|
|
void drawImageFromSaved(unsigned short offset_x, unsigned short offset_y, unsigned char i) {
|
|
for (int row = 0; row < 16; row++) {
|
|
for (int col = 0; col < 16; col++) {
|
|
uint32_t px_color = saved_imaged[i][row][col];
|
|
if (!px_color) {
|
|
continue;
|
|
}
|
|
unsigned short pixel_x = col + offset_x;
|
|
unsigned short pixel_y = row + offset_y;
|
|
|
|
if (pixel_x >= 0 && pixel_x < PANEL_PIXEL_COUNT &&
|
|
pixel_y >= 0 && pixel_y < PANEL_PIXEL_COUNT) {
|
|
setPixel(pixel_x, pixel_y, px_color);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void drawCharacter(const bool (*character)[5], unsigned char offset_x, unsigned char offset_y, uint32_t color) {
|
|
for (unsigned char row = 0; row < 7; row++) {
|
|
for (unsigned char col = 0; col < 5; col++) {
|
|
if (character[row][col]) {
|
|
unsigned short pixel_x = col + offset_x;
|
|
unsigned short pixel_y = row + offset_y;
|
|
|
|
if (pixel_x >= 0 && pixel_x < PANEL_PIXEL_COUNT &&
|
|
pixel_y >= 0 && pixel_y < PANEL_PIXEL_COUNT) {
|
|
setPixel(pixel_x, pixel_y, color);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
|
|
pixels.begin();
|
|
pixels.clear();
|
|
|
|
drawCharacter(font7x5[0], 7, 5, 0xFFFFFFFF);
|
|
|
|
pixels.show();
|
|
start_server();
|
|
}
|
|
|
|
void loop() {
|
|
handle_server();
|
|
} |