Arduino Polska Forum

Pełna wersja: Problem z kompilacja ESP8266 :(
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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.
zła wybrałeś płytkę esp, program pisany tylko na wemos..
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.
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ł ?
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ą?