139 lines
3.9 KiB
C++
139 lines
3.9 KiB
C++
#include <WiFi.h>
|
||
#include <WebServer.h>
|
||
#include <DMD32.h>
|
||
#include <fonts/Font_BOLD.h>
|
||
#include <FS.h>
|
||
|
||
#define FONT Font_BOLD
|
||
#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";
|
||
|
||
WebServer server(80);
|
||
IPAddress staticIP(10, 131, 170, 4);
|
||
IPAddress gateway(10, 131, 170, 1);
|
||
IPAddress subnet(255, 255, 255, 0);
|
||
|
||
String displayText = "Привет из СКБ \"КИТ\"";
|
||
//String displayText = "Пизда с членом разлучились(";
|
||
hw_timer_t* timer = NULL;
|
||
|
||
void IRAM_ATTR triggerScan() {
|
||
dmd.scanDisplayBySPI();
|
||
}
|
||
|
||
void reader() {}
|
||
|
||
void setup() {
|
||
Serial.begin(115200);
|
||
dmd.selectFont(Font_BOLD);
|
||
WiFi.begin(ssid, password);
|
||
//WiFi.config(staticIP, gateway, subnet);
|
||
|
||
if (!WiFi.config(staticIP, gateway, subnet)) {
|
||
Serial.println("Failed to configure Static IP");
|
||
} else {
|
||
Serial.println("Static IP configured!");
|
||
}
|
||
|
||
// if(!SPIFFS.begin()){
|
||
// Serial.print("An occurred ERROR");
|
||
// log_e("OCCURRED ERROR");
|
||
// return;
|
||
// }
|
||
|
||
while (WiFi.status() != WL_CONNECTED) {
|
||
delay(500);
|
||
Serial.print(".");
|
||
}
|
||
|
||
Serial.println("\nConnected to WiFi");
|
||
Serial.println(WiFi.localIP());
|
||
|
||
// Обрабатываем GET запрос для главной страницы с формой
|
||
server.on("/", HTTP_GET, []() {
|
||
panel = true;
|
||
server.send(200, "text/html",
|
||
"<!DOCTYPE html>"
|
||
"<html lang='ru'>"
|
||
"<head>"
|
||
"<meta charset='UTF-8'>"
|
||
"<title>Panel text</title>"
|
||
"</head>"
|
||
"<body>"
|
||
"<h2>Введите текст для отображения на экране:</h2>"
|
||
"<form action='/api/text' method='post'><input name='text'><input type='submit'></form>"
|
||
"</body>"
|
||
"</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");
|
||
}
|
||
// Отправляем ответ с правильной кодировкой UTF-8
|
||
server.send(200, "text/html; charset=UTF-8",
|
||
"<html><body><h2>Text set to:</h2><p>" + displayText + "</p></body></html>");
|
||
});
|
||
|
||
server.begin();
|
||
|
||
uint8_t cpuClock = ESP.getCpuFreqMHz();
|
||
timer = timerBegin(0, cpuClock, true);
|
||
timerAttachInterrupt(timer, &triggerScan, true);
|
||
timerAlarmWrite(timer, 300, true);
|
||
timerAlarmEnable(timer);
|
||
|
||
dmd.clearScreen(true);
|
||
}
|
||
|
||
void loop() {
|
||
server.handleClient(); // Обработка запросов от клиента
|
||
|
||
// // Очистка экрана и вывод текста
|
||
// dmd.clearScreen(true);
|
||
// dmd.drawMarquee(displayText.c_str(), displayText.length(), (32 * DISPLAYS_ACROSS) - 1, 0);
|
||
|
||
// long start = millis();
|
||
// long timer = start;
|
||
// boolean ret = false;
|
||
|
||
// while (!ret) {
|
||
// if ((timer + 30) < millis()) {
|
||
// ret = dmd.stepMarquee(-1, 0); // Прокрутка текста
|
||
// timer = millis();
|
||
// }
|
||
// }
|
||
}
|