• 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
Problem z kompilacja ESP8266 :(
#1
Witam,

Jakiś czas temu zrobiłem kod - pilot ir po Wifi na ESP8266 - wszystko działo poprawnie i było ok.Chciałem go lekko zmodyfikować dodać kilka nowy przycisków.

Niestety podczas kompilacji pojawia mi się błąd :

Kod:
esp8266:19:21: error: 'D2' was not declared in this scope
#define IR_SEND_PIN D2
                     ^
C:\Users\BusyBoy\Desktop\Arduino\esp8266\esp8266.ino:23:15: note: in expansion of macro 'IR_SEND_PIN'
IRsend irsend(IR_SEND_PIN);

exit status 1
'D2' was not declared in this scope

Kod było poprawny, niemodyfikowany i wcześniej bez problemu się skompilował - próbowałem już wszystkiego - i cały czas ten sam błąd Sad

Poniżej kod :

Kod:
#include <i18n.h>
#include <IRac.h>
#include <IRrecv.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
#include <IRtext.h>
#include <IRtimer.h>
#include <IRutils.h>
#include <ir_NEC.h>

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

// Add this library: https://github.com/markszabo/IRremoteESP8266
#include <IRremoteESP8266.h>

#define IR_SEND_PIN D2

#define DELAY_BETWEEN_COMMANDS 1000

IRsend irsend(IR_SEND_PIN);

const char* ssid = "xxxx";
const char* password = "xxxxx";

ESP8266WebServer server(80);

const int led = BUILTIN_LED;

String rowDiv = "    <div class=\"row\" style=\"padding-bottom:1em\">\n";
String endDiv = "    </div>\n";

// Buttons are using the bootstrap grid for sizing - http://getbootstrap.com/css/#grid
String generateButton(String colSize, String id, String text, String url) {

  return  "<div class=\"" + colSize + "\" style=\"text-align: center\">\n" +
          "    <button id=\"" + id + "\" type=\"button\" class=\"btn btn-default\" style=\"width: 100%\" onclick='makeAjaxCall(\"" + url + "\")'>" + text + "</button>\n" +
          "</div>\n";
}

void handleRoot() {
  digitalWrite(led, 0);
  String website = "<!DOCTYPE html>\n";
  website = website + "<html>\n";
  website = website + "  <head>\n";
  website = website + "    <meta charset=\"utf-8\">\n";
  website = website + "    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n";
  website = website + "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n";
  website = website + "    <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\">\n";
  website = website + "  </head>\n";
  website = website + "  <body>\n";
  website = website + "    <div class=\"container-fluid\">\n";

  website = website + rowDiv;
  website = website + endDiv;
  website = website + rowDiv;
  website = website + endDiv;
  website = website + rowDiv;
  website = website + generateButton("col-xs-6", "tvpower","TV POWER", "tvpower");
  website = website + generateButton("col-xs-6", "tvmute","MUTE", "tvmute");
  website = website + endDiv;
  website = website + rowDiv;
  website = website + endDiv;
  website = website + rowDiv;
  website = website + generateButton("col-xs-6", "pilotinfower","PILOT/INFO", "pilotinfo");
  website = website + generateButton("col-xs-6", "cofnij","COFINIJ", "cofnij");
  website = website + endDiv;
  website = website + rowDiv;
  website = website + rowDiv;
  website = website + endDiv;
  website = website + endDiv;
  website = website + rowDiv;
  website = website + generateButton("col-xs-4", "channel1","1", "channel1");
  website = website + generateButton("col-xs-4", "channel2","2", "channel2");
  website = website + generateButton("col-xs-4", "channel3","3", "channel3");
  website = website + endDiv;
  website = website + rowDiv;
  website = website + endDiv;
  website = website + rowDiv;
  website = website + generateButton("col-xs-4", "channel4","4", "channel4");
  website = website + generateButton("col-xs-4", "channel5","5", "channel5");
  website = website + generateButton("col-xs-4", "channel6","6", "channel6");
  website = website + endDiv;
  website = website + rowDiv;
  website = website + endDiv;
  website = website + rowDiv;
  website = website + generateButton("col-xs-4", "channel7","7", "channel7");
  website = website + generateButton("col-xs-4", "channel8","8", "channel8");
  website = website + generateButton("col-xs-4", "channel9","9", "channel9");
  website = website + endDiv;
  website = website + rowDiv;
  website = website + endDiv;
  website = website + rowDiv;
website = website + generateButton("col-xs-12", "channel0","0", "channel0");
  website = website + endDiv;
  website = website + rowDiv;
  website = website + endDiv;
  website = website + rowDiv;

  website = website + generateButton("col-xs-6", "volplus","VOL+", "volplus");
  website = website + generateButton("col-xs-6", "volminus","VOL-", "volminus");
  website = website + endDiv;
  website = website + rowDiv;
  website = website + endDiv;
  website = website + rowDiv;
  website = website + generateButton("col-xs-6", "progplus","PROG+", "progplus");
  website = website + generateButton("col-xs-6", "progminus","PROG-", "progminus");
  website = website + endDiv;
  website = website + rowDiv;
  website = website + endDiv;
 
  website = website + endDiv;
  website = website + "    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js\"></script>\n";
  website = website + "    <script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js\"></script>\n";
  website = website + "    <script> function makeAjaxCall(url){$.ajax({\"url\": url})}</script>\n";
  website = website + "  </body>\n";
  website = website + "</html>\n";

  server.send(200, "text/html", website);
  digitalWrite(led, 1);
}

void handleNotFound(){
  digitalWrite(led, 1);
  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);
  digitalWrite(led, 1);
}

void setup(void){
  irsend.begin();
  pinMode(led, OUTPUT);
  digitalWrite(led, 1);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

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

  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS Responder Started");
  }

  server.on("/", handleRoot);

  server.on("/tvpower", [](){
    Serial.println("TV POWER");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A48B7, 32);
    delay(50);
  }
    server.send(200, "text/plain", "TV POWER");
  });

  server.on("/tvmute", [](){
    Serial.println("MUTE");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A9C63, 32);
    delay(50);
  }
    server.send(200, "text/plain", "MUTE");
  });

  server.on("/pilotinfo", [](){
    Serial.println("PILOT/INFO");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17ADA25, 32);
    delay(50);
  }
    server.send(200, "text/plain", "PILOT/INFO");
  });

  server.on("/cofnij", [](){
    Serial.println("COFINIJ");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A3AC5, 32);
    delay(50);
  }
    server.send(200, "text/plain", "COFINIJ");
  });

  server.on("/channel1", [](){
    Serial.println("CH 1");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A807F, 32);
    delay(50);
  }
    server.send(200, "text/plain", "CH 1");
  });

  server.on("/channel2", [](){
    Serial.println("CH 2");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A40BF, 32);
    delay(50);
  }
    server.send(200, "text/plain", "CH 2");
  });
 
  server.on("/channel3", [](){
    Serial.println("CH 3");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17AC03F, 32);
    delay(50);
  }
    server.send(200, "text/plain", "CH 3");
  });

  server.on("/channel4", [](){
    Serial.println("CH 4");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A20DF, 32);
    delay(50);
  }
    server.send(200, "text/plain", "CH 4");
  });

  server.on("/channel5", [](){
    Serial.println("CH 5");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17AA05F, 32);
    delay(50);
  }
    server.send(200, "text/plain", "CH 5");
  });

  server.on("/channel6", [](){
    Serial.println("CH 6");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A609F, 32);
    delay(50);
  }
    server.send(200, "text/plain", "CH 6");
  });

  server.on("/channel7", [](){
    Serial.println("CH 7");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17AE01F, 32);
    delay(50);
  }
    server.send(200, "text/plain", "CH 7");
  });


  server.on("/channel8", [](){
    Serial.println("CH 8");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A10EF, 32);
    delay(50);
  }
    server.send(200, "text/plain", "CH 8");
  });

  server.on("/channel9", [](){
    Serial.println("CH 9");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A906F, 32);
    delay(50);
  }
    server.send(200, "text/plain", "CH 9");
  });

  server.on("/channel0", [](){
    Serial.println("CH 0");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A00FF, 32);
    delay(50);
  }
    server.send(200, "text/plain", "CH 0");
  });

  server.on("/volplus", [](){
    Serial.println("VOL+");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A4CB3, 32);
    delay(50);
  }
    server.send(200, "text/plain", "VOL+");
  });

  server.on("/volminus", [](){
    Serial.println("VOL-");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17ACC33, 32);
    delay(50);
  }
    server.send(200, "text/plain", "VOL-");
  });

  server.on("/progplus", [](){
    Serial.println("PROG+");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A0CF3, 32);
    delay(50);
  }
    server.send(200, "text/plain", "PROG+");
  });

  server.on("/progminus", [](){
    Serial.println("PROG-");
  for (int i = 0; i < 3; i++) {
    irsend.sendNEC(0xE17A8C73, 32);
    delay(50);
  }
    server.send(200, "text/plain", "PROG-");
  });



  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP Server Started");
}

void loop(void){
  server.handleClient();
}

Bardzo prosze o pomoc.
 
Odpowiedź
#2
zła wybrałeś płytkę esp, program pisany tylko na wemos..
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#3
Może zadziałać też z innymi ESP, a to nie oznacza wcale że jest lepiej. Trzeba uważać, czytać dokumentacje płytek, schematy z opisami który pin IO 0,1,2,3 jest przypisany w definicjach Arduino do D0, D1, D2, itd.
Są też błędy związane z core ESP, pojawiają się nowe funkcje, usuwane są stare, usuwane są błędy i pojawiają się nowe. Jak coś działało na danej wersji core to dokładnie na tej samej powinno działać tak samo. To samo dotyczy bibliotek.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#4
Witam,

Co do płytki to wybieram modul esp8266 w aplikacji Arduino i z tego co pamiętam (chodz nie jestem w 100% pewny) taką płytkę wybrałem wcześniej.

Co mogę w takim razie zrobić ? jakie czynności aby było wszystko w porządku i kod poprawnie się skompilował ?
 
Odpowiedź
#5
Użyj Google, hasło "nazwa płytki pinout", zobacz czy wybrana przez Ciebie ma pin D2. Generalnie to zmarnowałeś kolejnego posta, nie pisząc jaką płytkę wybierasz - WEMOS, NODEMCU, inną?
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości