• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Pilot Uniwersalny - Pomoc w kodzie
#1
Witam

Chciałbym wykonać urządzenie pilota uniwersalnego
Program miałby wysyłać kod IR randomowo np co 2ms.
Kody byłby nasłuchiwane abym wiedział jaki kod odpowiada np za włączenie urządzenia.
Jako pilot wysyłający kod mam ESP8266 z dioda IR nadawczą , do nasłuchu Arduino UNO z diodą IR odbiorczą 

Korzystam z szkicu IRServer który po podaniu kodu IR można sterować urządzeniem.  
Chciałbym aby własnie w tym szkicu kod nie był podawany tylko miałby być wysyłany losowo zwiększając się o 1  z zakresu 1000000000 do 9999999999 co 2ms. 
Niestety nie za bardzo znam się na programowaniu. Dopiero zaczynam przygodę z Arduino. 

Proszę o pomoc jak zastosować funkcje random do wysyłania kodu IR przez text/html

Kod:
#ifndef UNIT_TEST
#include <Arduino.h>
#endif
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
#include <WiFiClient.h>

const char* kSsid = "!!!!!!";
const char* kPassword = "!!!!!!";
MDNSResponder mdns;

ESP8266WebServer server(80);

const uint16_t kIrLed = 0;  // ESP8266 GPIO pin to use. Recommended: 4 (D2).

IRsend irsend(kIrLed);  // Set the GPIO to be used to sending the message.

void handleRoot() {
  server.send(200, "text/html",
              "<html>" \
                "<head><title>ESP8266 Pilot Uniwersalny</title></head>" \
                "<body>" \
                  "<h1>Sterowanie IR przez ESP8266</h1>" \
                  "<p><a href=\"ir?code=1704605895\">Pioneer POWER</a></p>" \
                  "<p><a href=\"ir?code=3251424817\">NETIA POWER</a></p>" \
                  "<p><a href=\"ir?code=3251399317\">NETIA VOL UP</a></p>" \
                  "<p><a href=\"ir?code=3251431957\">NETIA VOL DOWN</a></p>" \
                  "<p><a href=\"ir?code=2704\">SONY POWER</a></p>" \
                                                     
                "</body>" \
              "</html>");
}

void handleIr() {
  for (uint8_t i = 0; i < server.args(); i++) {
    if (server.argName(i) == "code") {
      uint32_t code = strtoul(server.arg(i).c_str(), NULL, 10);
#if SEND_NEC
      irsend.sendNEC(code, 32);
#endif  // SEND_NEC
#if SEND_SONY
irsend.sendSony(code, 12);
#endif 
    }
  }
  handleRoot();
}

void handleNotFound() {
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET)?"GET":"POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i = 0; i < server.args(); i++)
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  server.send(404, "text/plain", message);
}

void setup(void) {
  irsend.begin();

  Serial.begin(115200);
  WiFi.begin(kSsid, kPassword);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(kSsid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP().toString());

  if (mdns.begin("esp8266", WiFi.localIP())) {
    Serial.println("MDNS responder started");
  }

  server.on("/", handleRoot);
  server.on("/ir", handleIr);

  server.on("/inline", [](){
    server.send(200, "text/plain", "this works as well");
  });

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
}

void loop(void) {
  server.handleClient();
}
 
Odpowiedź
#2
Jak zaczynasz przygodę to zapoznaj się z  kursem, przeczytaj jakąś książkę, wykonaj kilka gotowych projektów. Może potem będziesz pisał sensowniejsze pytania - albo losowe albo "o 1  z zakresu 1000000000 do 9999999999 co 2ms".
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości