пытаюсь переключить вход на мои динамики через ИК-порт с помощью веб-браузера, но у меня проблемы с его работой

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");

}

, 👍0


1 ответ


3

Посмотрите на свой код. Вы настраиваете отправителя, определяете данные, а затем никогда их не используете:

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 на частоту, которую использует пульт, который вы пытаетесь воспроизвести, иначе он все равно не будет работать.

,

спасибо, я знал, что что-то упустил, @nwgat