пытаюсь переключить вход на мои динамики через ИК-порт с помощью веб-браузера, но у меня проблемы с его работой
ived протестировал ИК-код с помощью https://github.com/wemos/D1_mini_Examples/blob/ master/examples/04.Shields/IR_Controller_Shield/IRsend/IRsend.ino
и это работает таким образом, но когда я пытаюсь закодировать его вместе с веб-сервером, я ничего не получаю, может ли кто-нибудь объяснить мне, что не так в моем коде? веб-сервер работает нормально, это ИК-часть, я не совсем понимаю, почему она не работает
#include <i18n.h>
#include "ESP8266WiFi.h"
#include "ESP8266WebServer.h"
#include <IRremoteESP8266.h>
#include <IRsend.h>
ESP8266WebServer server(80);
void setup() {
Serial.begin(115200, SERIAL_8N1, SERIAL_TX_ONLY);
WiFi.begin("net", "pass"); //Подключаемся к сети Wi-Fi
while (WiFi.status() != WL_CONNECTED) { // Ждем соединения
delay(500);
Serial.println("Waiting to connect…");
}
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); // Печатаем локальный IP
server.on("/on", []() { //Определяем функцию обработки пути
server.send(200, "text / plain", "Switching to USB input");
#define IR_LED D3
IRsend irsend(IR_LED); // Установите GPIO, который будет использоваться для отправки сообщения.
uint16_t rawData[71] = {8992, 4494, 574, 558, 572, 558, 574, 558, 574, 558, 574, 558, 572, 558, 572, 556, 572, 1660, 572, 1658, 574, 1658, 574, 1658, 574, 1660, 574, 1660, 574, 1660, 574, 1658, 602, 528, 574, 558, 574, 1658, 576, 556, 574, 556, 574, 1660, 574, 556, 574, 554, 574, 554, 574, 1658, 574, 556, 574, 1656, 576, 1658, 576, 556, 574, 1658, 576, 1656, 576, 1658, 576, 39978, 8994, 2256, 578};
irsend.begin();
});
server.on("/", handleRootPath); //Связываем функцию-обработчик с путем
server.begin(); //Запускаем сервер
Serial.println("Server listening");
}
void loop() {
server.handleClient(); //Обработка входящих запросов
}
void handleRootPath() { // Обработчик корневого пути
server.send(200, "text/plain", "NinjaLights");
}
@nwgat, 👍0
1 ответ
Посмотрите на свой код. Вы настраиваете отправителя, определяете данные, а затем никогда их не используете:
server.on("/on", []() { //Определяем функцию обработки пути
server.send(200, "text / plain", "Switching to USB input");
#define IR_LED D3
IRsend irsend(IR_LED); // Установите GPIO, который будет использоваться для отправки сообщения.
uint16_t rawData[71] = {8992, 4494, 574, 558, 572, 558, 574, 558, 574, 558, 574, 558, 572, 558, 572, 556, 572, 1660, 572, 1658, 574, 1658, 574, 1658, 574, 1660, 574, 1660, 574, 1660, 574, 1658, 602, 528, 574, 558, 574, 1658, 576, 556, 574, 556, 574, 1660, 574, 556, 574, 554, 574, 554, 574, 1658, 574, 556, 574, 1656, 576, 1658, 576, 556, 574, 1658, 576, 1656, 576, 1658, 576, 39978, 8994, 2256, 578};
irsend.begin();
});
Вам нужно добавить вызов irsend.SendRaw()
, чтобы фактически отправить данные, иначе вы фактически ничего не сделали.
Итак, ваш код будет выглядеть так:
server.on("/on", []() { //Определяем функцию обработки пути
server.send(200, "text / plain", "Switching to USB input");
#define IR_LED D3
IRsend irsend(IR_LED); // Установите GPIO, который будет использоваться для отправки сообщения.
uint16_t rawData[71] = {8992, 4494, 574, 558, 572, 558, 574, 558, 574, 558, 574, 558, 572, 558, 572, 556, 572, 1660, 572, 1658, 574, 1658, 574, 1658, 574, 1660, 574, 1660, 574, 1660, 574, 1658, 602, 528, 574, 558, 574, 1658, 576, 556, 574, 556, 574, 1660, 574, 556, 574, 554, 574, 554, 574, 1658, 574, 556, 574, 1656, 576, 1658, 576, 556, 574, 1658, 576, 1656, 576, 1658, 576, 39978, 8994, 2256, 578};
irsend.begin();
irsend.sendRaw(rawData, 71, KHZ);
});
Вам нужно будет заменить KHZ
на частоту, которую использует пульт, который вы пытаетесь воспроизвести, иначе он все равно не будет работать.
- Утечка памяти без участия строк
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- AT-команда не отвечает на последовательный монитор
спасибо, я знал, что что-то упустил, @nwgat