First commit

This commit is contained in:
maks_gein 2025-02-17 19:47:18 +03:00
parent 81bcb27e30
commit e0016201bc
2 changed files with 77 additions and 42 deletions

View File

@ -5,3 +5,11 @@
+Split sentences into lines(features)
+Enable/disable text scrolling (features)
+Add a drawing as a binary image (features)
+State of panel
+Remote panel on/off
#Docs for API
*Endpoints
+10.131.170.4 - the local static IP
+/api/text - endpoint for editing text (POST)
+/api/led - endpint for on/off panel (POST)
+/api/led - endpoint for check on/off panel (GET), return "{"led":"true"}" if panel ON and "{"led":"false"}" if panel OFF

View File

@ -8,6 +8,7 @@
#define DISPLAYS_ACROSS 1
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);
bool panel = true;
const char* ssid = "SKBKIT";
const char* password = "skbkit2024";
@ -55,6 +56,7 @@ void setup() {
// Обрабатываем GET запрос для главной страницы с формой
server.on("/", HTTP_GET, []() {
panel = true;
server.send(200, "text/html",
"<!DOCTYPE html>"
"<html lang='ru'>"
@ -69,8 +71,33 @@ void setup() {
"</html>");
});
server.on("/api/led", HTTP_GET, [](){
if(panel){
server.send(200, "application/json", "{\"state\": \"true\"}");
}else if(!panel){
server.send(200, "application/json", "{\"state\": \"false\"}");
};
});
server.on("/api/led", HTTP_POST, [](){
String panelState = server.arg("plain");
Serial.println(panelState);
if (panelState == "{\"led\": \"on\"}"){
Serial.println("Panel on!");
panel = true;
//scanDisplayBySPI();
}else if(panelState == "{\"led\": \"off\"}"){
panel = false;
Serial.println("Panel off!");
SPI.end();
}
server.send(200, "text/html", "");
});
// Обрабатываем POST запрос для изменения текста
server.on("/api/text", HTTP_POST, []() {
panel = true;
if (server.hasArg("text")) {
// Получаем текст с формы без преобразования в HTML-сущности
displayText = server.arg("text");
@ -94,18 +121,18 @@ void setup() {
void loop() {
server.handleClient(); // Обработка запросов от клиента
// Очистка экрана и вывод текста
dmd.clearScreen(true);
dmd.drawMarquee(displayText.c_str(), displayText.length(), (32 * DISPLAYS_ACROSS) - 1, 0);
// // Очистка экрана и вывод текста
// dmd.clearScreen(true);
// dmd.drawMarquee(displayText.c_str(), displayText.length(), (32 * DISPLAYS_ACROSS) - 1, 0);
long start = millis();
long timer = start;
boolean ret = false;
// long start = millis();
// long timer = start;
// boolean ret = false;
while (!ret) {
if ((timer + 30) < millis()) {
ret = dmd.stepMarquee(-1, 0); // Прокрутка текста
timer = millis();
}
}
// while (!ret) {
// if ((timer + 30) < millis()) {
// ret = dmd.stepMarquee(-1, 0); // Прокрутка текста
// timer = millis();
// }
// }
}