Доброй ночи! Пытаюсь сделать код для Wemos d1 mini, который делает вот что. wemos создаёт точку доступа и локальный сайт. На котором будет поле для ввода текста и кнопка отправить. Когда я ввожу текст (на русском языке) и нажимаю на кнопку, он должен преобразовываться в азбуку морзе (для русского алфавита). Затем этот текст на азбуке морзе выводился миганием светодиода. Но не всё так гладко, английский алфавит он кушает, а кириллический нет. Может кто-нибудь подправить, просто мои полномочия на этом всё
C++:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char *ssid = "YourSSID"; // SSID точки доступа
const char *password = "YourPassword"; // Пароль для точки доступа
ESP8266WebServer server(80);
const int ledPin = D4; // Пин, к которому подключен светодиод
const char *morseAlphabet[] = {
".-", // А
"-...", // Б
".--", // В
"--.", // Г
"-..", // Д
".", // Е
"..-.", // Ж
"--..", // З
"..", // И
".---", // Й
"-.-", // К
".-..", // Л
"--", // М
"-.", // Н
"---", // О
".--.", // П
"--.-", // Р
"...", // С
"-", // Т
"..-", // У
"...-", // Ф
"....", // Х
"-.-.", // Ц
"---.", // Ч
"----", // Ш
"--.-", // Щ
"-..-", // Ъ
"-.--", // Ы
"-.--.", // Ь
"..-..", // Э
".-.-", // Ю
"--.--" // Я
};
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(115200);
// Подключение к Wi-Fi
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
server.on("/", HTTP_GET, handleRoot);
server.on("/", HTTP_POST, handlePost);
server.begin();
}
void loop() {
server.handleClient();
}
void handleRoot() {
String html = "<html><body>";
html += "<h1>Преобразование текста в азбуку Морзе</h1>";
html += "<form method='post' action='/'>";
html += "Текст на русском языке: <input type='text' name='inputText'>";
html += "<input type='submit' value='Отправить'>";
html += "</form>";
html += "</body></html>";
server.send(200, "text/html", html);
}
void handlePost() {
String inputText = server.arg("inputText");
String morseText = textToMorse(inputText);
server.send(200, "text/html", "Текст на азбуке Морзе: " + morseText);
flashMorseCode(morseText);
}
String textToMorse(String text) {
String morseCode = "";
text.toLowerCase();
for (int i = 0; i < text.length(); i++) {
char currentChar = text[i];
if (currentChar == ' ') {
morseCode += " ";
} else if (isAlpha(currentChar)) {
int index = currentChar - 'a';
morseCode += morseAlphabet[index];
morseCode += " ";
}
}
return morseCode;
}
void flashMorseCode(String morse) {
for (int i = 0; i < morse.length(); i++) {
char symbol = morse[i];
if (symbol == '.') {
digitalWrite(ledPin, HIGH);
delay(100); // Длительность точки
digitalWrite(ledPin, LOW);
delay(100); // Пауза между символами
} else if (symbol == '-') {
digitalWrite(ledPin, HIGH);
delay(300); // Длительность тире
digitalWrite(ledPin, LOW);
delay(100); // Пауза между символами
} else if (symbol == ' ') {
delay(300); // Пауза между словами
}
}
}