Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] error for compiling board Nodemcu 1.0

Status
Not open for further replies.

Anon_1234

Newbie level 4
Joined
Dec 5, 2020
Messages
7
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
30
Hello, im doing a project on iot enabled thermal detector system using nodemcu,, I am not familiar with the ARDUINO IDE. There was an error for compiling board Nodemcu 1.0. Below is the link to the coding and the coding itself, any help is much appreciated.



Code:
//wiring: vin - 3.3v, gnd - gnd, scl - D1, sda - D2







#include <ESP8266WiFi.h>

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

#include <Wire.h> // I2C library, required for MLX90614

#include <SparkFunMLX90614.h> // SparkFunMLX90614 Arduino library



/************************* WiFi Access Point *********************************/



#define WLAN_SSID       "123456789"

#define WLAN_PASS       ""



/************************* Adafruit.io Setup *********************************/



#define AIO_SERVER      "io.adafruit.com"

#define AIO_SERVERPORT  1883

#define AIO_USERNAME    "your IO user name"

#define AIO_KEY         "your secret io key"



/************ Global State (you don't need to change this!) ******************/



// Create an ESP8266 WiFiClient class to connect to the MQTT server.

WiFiClient client;

// or... use WiFiFlientSecure for SSL

//WiFiClientSecure client;



// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.

Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);



/****************************** Feeds ***************************************/



// Setup a feed called 'photocell' for publishing.

// Notice MQTT paths for AIO follow the form: <username>/feeds/<feedname>

Adafruit_MQTT_Publish temperature = Adafruit_MQTT_Publish(&mqtt,  "prasannaakumar/feeds/temperature");



// Setup a feed called 'onoff' for subscribing to changes.

Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&mqtt, "prasannaakumar/feeds/onoff");



/*************************** Sketch Code ************************************/



// Bug workaround for Arduino 1.6.6, it seems to need a function declaration

// for some reason (only affects ESP8266, likely an arduino-builder bug).

void MQTT_connect();

IRTherm therm; // Create an IRTherm object to interact with throughout







void setup() {

  Serial.begin(115200);

  delay(10);

  therm.begin();

  therm.setUnit(TEMP_F); // Set the library's units to Farenheit





  Serial.println(F("Adafruit MQTT demo"));



  // Connect to WiFi access point.

  Serial.println(); Serial.println();

  Serial.print("Connecting to ");

  Serial.println(WLAN_SSID);



  WiFi.begin(WLAN_SSID, WLAN_PASS);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

 

  }

  Serial.println();



  Serial.println("WiFi connected");

  Serial.println("IP address: "); Serial.println(WiFi.localIP());



  // Setup MQTT subscription for onoff feed.

  mqtt.subscribe(&onoffbutton);

}



uint32_t x=0;



void loop() {

  // Ensure the connection to the MQTT server is alive (this will make the first

  // connection and automatically reconnect when disconnected).  See the MQTT_connect

  // function definition further below.

  MQTT_connect();



  // this is our 'wait for incoming subscription packets' busy subloop

  // try to spend your time here



  Adafruit_MQTT_Subscribe *subscription;

  while ((subscription = mqtt.readSubscription(5000))) {

    if (subscription == &onoffbutton) {

      Serial.print(F("Got: "));

      Serial.println((char *)onoffbutton.lastread);

    }

  }



if (therm.read()) // On success, read() will return 1, on fail 0.

  {

    // Use the object() and ambient() functions to grab the object and ambient

  // temperatures.

  // They'll be floats, calculated out to the unit you set with setUnit().

    temperature.publish(therm.object(), 2);

    Serial.print("Object: " + String(therm.object(), 2));

    Serial.write('°'); // Degree Symbol

    Serial.println("F");

    Serial.print("Ambient: " + String(therm.ambient(), 2));

    Serial.write('°'); // Degree Symbol

    Serial.println("F");

    Serial.println();

delay(1);



  // ping the server to keep the mqtt connection alive

  // NOT required if you are publishing once every KEEPALIVE seconds

  /*

  if(! mqtt.ping()) {

    mqtt.disconnect();

  }

  */

}

}

// Function to connect and reconnect as necessary to the MQTT server.

// Should be called in the loop function and it will take care if connecting.

void MQTT_connect() {

  int8_t ret;



  // Stop if already connected.

  if (mqtt.connected()) {

    return;

  }



  Serial.print("Connecting to MQTT... ");



  uint8_t retries = 3;

  while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected

       Serial.println(mqtt.connectErrorString(ret));

       Serial.println("Retrying MQTT connection in 5 seconds...");

       mqtt.disconnect();

       delay(500);  // wait 5 seconds

       retries--;

       if (retries == 0) {

         // basically die and wait for WDT to reset me

         while (1);

       }

  }

  Serial.println("MQTT Connected!");

}
 
Last edited by a moderator:

Arduino: 1.8.13 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"

In file included from C:\Users\ASUS\Documents\Arduino\libraries\SparkFun_MLX90614_Arduino_Library-master\src\SparkFunMLX90614.cpp:17:0:

C:\Users\ASUS\Documents\Arduino\libraries\SparkFun_MLX90614_Arduino_Library-master\src\SparkFunMLX90614.cpp: In member function 'uint8_t IRTherm::sleep()':

C:\Users\ASUS\Documents\Arduino\libraries\SparkFun_MLX90614_Arduino_Library-master\src/SparkFunMLX90614.h:30:47: error: 'digitalPinToPinName' was not declared in this scope

#define SCL (digitalPinToPinName(PIN_WIRE_SCL))

^

C:\Users\ASUS\Documents\Arduino\libraries\SparkFun_MLX90614_Arduino_Library-master\src\SparkFunMLX90614.cpp:276:10: note: in expansion of macro 'SCL'

pinMode(SCL, OUTPUT);

^

C:\Users\ASUS\Documents\Arduino\libraries\SparkFun_MLX90614_Arduino_Library-master\src\SparkFunMLX90614.cpp: In member function 'uint8_t IRTherm::wake()':

C:\Users\ASUS\Documents\Arduino\libraries\SparkFun_MLX90614_Arduino_Library-master\src/SparkFunMLX90614.h:30:47: error: 'digitalPinToPinName' was not declared in this scope

#define SCL (digitalPinToPinName(PIN_WIRE_SCL))

^

C:\Users\ASUS\Documents\Arduino\libraries\SparkFun_MLX90614_Arduino_Library-master\src\SparkFunMLX90614.cpp:285:10: note: in expansion of macro 'SCL'

pinMode(SCL, INPUT); // SCL high

^

exit status 1

Error compiling for board NodeMCU 1.0 (ESP-12E Module).



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
 
Last edited by a moderator:

Looks like some basic library information is missing. Is this code you have written or copied from somewhere else, possibly originally for a different MCU or ESP32 instead?

Brian.
 

The problem is the ESP8266 library doesn't seem to support the 'digitalPinToPinName' function so it can't work out which pin is called SCL.
This is why I suspect it derives from code for a different processor.

You can try this but I'm not sure it will work:
#define SCL <pin number on the nodeMCU>

Place the pin number you are using for the SCL instead of the '<pin number on the nodeMCU>'
For example '#define SCL D1 '. You might have to do it for other pins too.

Brian.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top