Доброе время! Решил сделать небольшой проект с POV (англ. point of view) - такая штука, которой можно махнуть и она отрисовывает в воздухе символы или буквы, подобно той, описание которой изложено на сайте Амперки: http://wiki.amperka.ru/projects:povdisplay Задача переделать код так, чтобы она работала на ESP8266, лучше ESP12F - а отображаемый текст программировался через браузер устройства, подключенного по WiFi (AP). В сети много подобных проектов - но я не нашел именно того, что нужно. Есть подобный девайс с хорошим объяснением у Алекса Гайвера https://alexgyver.ru/pov-serial-display/ - но она прошивается по Bluetooth - а это не совсем хорошо, так как реализация слишком громоздкая: нужна и ардуинка (которые сейчас дорогие) и Bluetoth HC-06 и еще устанавливать приложение в телефон - в то время, когда одна копеечная еэспешка может все это потянуть. То есть: сделать ESP точкой доступа, подключиться смартфоном к новой WiFi сети, в браузере зайти на стандартную страницу, типа 192.168.4.1 и ввести новый набор символов, который "прошьется" в ESP и будет отображаться в "бегущей строке". В общем, есть код, который отрисовывает строку Код (C++): int shiftPin = 4; int storePin = 3; int dataPin = 2; int LEDanPin = 5; int analogPin = A1; int schalter = 0; int kali; int g; int Zeichen[13][8]={ {0,0,0,0,0,0,0,0}, {0,0,0,1,1,0,0,0}, {0,0,1,0,0,1,0,0}, {0,1,0,0,0,0,1,0}, {1,0,0,1,0,0,0,1}, {1,0,1,0,0,1,0,1}, {1,0,1,0,0,0,0,1}, {1,0,1,0,0,1,0,1}, {1,0,0,1,0,0,0,1}, {0,1,0,0,0,0,1,0}, {0,0,1,0,0,1,0,0}, {0,0,0,1,1,0,0,0}, {0,0,0,0,0,0,0,0}}; void setup(){ pinMode(storePin, OUTPUT); pinMode(shiftPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(LEDanPin, OUTPUT); pinMode(analogPin, INPUT); Serial.begin(9600); kali = analogRead(analogPin); digitalWrite(LEDanPin, HIGH); } void loop(){ g = kali-(analogRead(analogPin)); Serial.print(g); Serial.println(); if (g > 80 and schalter == 0){ schalter = 1; delay (30); for (int n=0; n < 13; n++){ for (int i=0; i < 8; i++){ resetPins(); digitalWrite(dataPin, Zeichen[n][i]); delay(0); digitalWrite(shiftPin, HIGH); delay(0); } digitalWrite(storePin, HIGH); digitalWrite(LEDanPin, LOW); delay(5); digitalWrite(LEDanPin, HIGH); } }else if (g < -80 and schalter == 1){ schalter = 0; delay (30); for (int n=0; n < 13; n++){ for (int i=0; i < 8; i++){ resetPins(); digitalWrite(dataPin, Zeichen[n][i]); delay(0); digitalWrite(shiftPin, HIGH); delay(0); } digitalWrite(storePin, HIGH); digitalWrite(LEDanPin, LOW); delay(5); digitalWrite(LEDanPin, HIGH); } } } void resetPins(){ digitalWrite(shiftPin, LOW); digitalWrite(storePin, LOW); digitalWrite(dataPin, LOW); } и есть код, который умеетподключеть ESP-шку по WiFi и управлять светодиодом, например этот: Код (C++): /* * Sketch: ESP8266_LED_Control_02B * Now with added CSS and LED status * Control an LED from a web browser * Intended to be run on an ESP8266 * * connect to the ESP8266 AP then * use web broswer to go to 192.168.4.1 * */ #include <ESP8266WiFi.h> const char WiFiPassword[] = "12345678"; const char AP_NameChar[] = "LEDControl" ; WiFiServer server(80); String header = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"; String html_1 = "<!DOCTYPE html><html><head><meta name='viewport' content='width=device-width, initial-scale=1.0'/><meta charset='utf-8'><style>body {font-size:140%;} #main {display: table; margin: auto; padding: 0 10px 0 10px; } h2,{text-align:center; } .button { padding:10px 10px 10px 10px; width:100%; background-color: #4CAF50; font-size: 120%;}</style><title>LED Control</title></head><body><div id='main'><h2>LED Control</h2>"; String html_LED = ""; String html_2 = "<form id='F1' action='LEDON'><input class='button' type='submit' value='LED ON' ></form><br>"; String html_3 = "<form id='F2' action='LEDOFF'><input class='button' type='submit' value='LED OFF' ></form><br>"; String html_4 = "</div></body></html>"; String request = ""; int LED_Pin = D1; void setup() { pinMode(LED_Pin, OUTPUT); boolean conn = WiFi.softAP(AP_NameChar, WiFiPassword); server.begin(); } // void setup() void loop() { // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Read the first line of the request request = client.readStringUntil('\r'); if ( request.indexOf("LEDON") > 0 ) { digitalWrite(LED_Pin, HIGH); } else if ( request.indexOf("LEDOFF") > 0 ) { digitalWrite(LED_Pin, LOW); } // Get the LED pin status and create the LED status message if (digitalRead(LED_Pin) == HIGH) { html_LED = "The LED is on<br><br>"; } else { html_LED = "The LED is off<br><br>"; } client.flush(); client.print( header ); client.print( html_1 ); client.print( html_LED ); client.print( html_2 ); client.print( html_3 ); client.print( html_4); delay(5); // The client will actually be disconnected when the function returns and 'client' object is detroyed } // void loop() - и их нужно как-то объединить. Кто может помочь в этом? Заранее благодарен!
Если предложить не благодарность, а денежные средства - обязательно найдутся желающие с непреодолимым желанием помочь!
Если бы вы внимательно посмотрели проекты, то Амперковский проект ESP8266 не потянет в принципе (ног не хватит). Там используется инерциальный датчик, и работает это соответственно на порядок лучше чем у Гайвера. (так махать можно с разной скоростью).... Работы на вашу задумку примерно на 2-3 дня Вы 3 рабочих дня примерно в какую сумму оцениваете?
Я посмотрел внимательно и привел первый скетч (не Амперковский), в котором используется сдвиговый регистр и там задействовано всего 6 выводов, включая акселерометр, вот видео того проекта: . Скетч простой, работает вообще без каких-либо библиотек и без проблем компилируется на ESP. Гайвера я привел просто, как пример, в котором была реализована возможность программирования текста по воздуху - но сразу сказал, что это, к сожалению не подходит. Второй скетч легко создает WiFi точку доступа, там даже есть html страничка, которую можно немного изменить (это я могу сделать сам). По сути, нужно просто перебросать куски кода из одного в другой - конечно же, имея правильные знания (которых у меня, к сожалению нет). По поводу оплаты 3 рабочих дней - подождите, не начинайте, дайте мне подумать...
Этот пример сюда не подойдет не разу. Вот есть пример с окнами ввода.... https://randomnerdtutorials.com/esp32-esp8266-input-data-html-form/ Разбирайтесь и переписывайте под себя....
О, да, этот пример лучше, там уже есть готовые поля ввода - правда, здесь ESP должна подключиться к роутеру (в ESP должен быть прошит SSID и пароль), а роутер назначает динамический IP, его заранее знать нельзя, а можно узнать только подключив в компу и заглянуть в монитор порта. Мой же пример - делает из ESP точку доступа, то есть, где-то на улице, где нет никакой локальной сети, можно одним только телефоном подключиться к ESP - и прошить новый текст в рисовалку - это и есть WiFi Access Point. Однако, за статью спасибо!
Там этих примеров..... Вот вам точка доступа.... выкидываете ту часть где осуществляется подключение к вафле. /https://randomnerdtutorials.com/esp8266-nodemcu-wi-fi-manager-asyncwebserver/
А если вместо светодиодов использовать адресную светодиодную ленту WS2812 может получиться? Есть похожая штука на гитхабе (скорей всего их много), например эта: https://github.com/juliensnz/pov-wheel . Ну и два-три дня, на мой взгляд, многовато, тут два-три часа скорей всего)