首页 > 解决方案 > 从显示的函数中打印库值

问题描述

我正在尝试从库ESP8266WiFi在我的显示器上打印返回值(WiFi.localIP) 。但我遇到了一个错误。对于显示器,我使用的是SSD1306库。

这样做的目的是在显示屏上打印 ESP8266 的 IP 地址。

错误:

Arduino: 1.8.16 (Windows 10), Board: "LOLIN(WEMOS) D1 R2 & mini, 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 4MB (FS:2MB OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 115200"


C:\Users\lauwy\Documents\Arduino\Testsketch\Project\Code\WEB\V4.2\V4.2.ino: In function 'void connectToWifi()':

V4.2:38:32: error: taking address of rvalue [-fpermissive]

   38 |   String ipstat = &WiFi.localIP();

      |                    ~~~~~~~~~~~~^~

V4.2:38:19: error: conversion from 'IPAddress*' to non-scalar type 'String' requested

   38 |   String ipstat = &WiFi.localIP();

      |                   ^~~~~~~~~~~~~~~

exit status 1

taking address of rvalue [-fpermissive]

代码:

#include <Wire.h>  
#include "SSD1306.h"
SSD1306  display(0x3C, D2, D5);

#include <ESP8266WiFi.h>
const char* ssid     = "*****************"; //Enter network SSID 
const char* password = "*****************"; //Enter network PASSWORD 

WiFiServer server(80);

void connectToWifi(){
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  server.begin();

  String ipstat = &WiFi.localIP();
 
  display.init();
  display.flipScreenVertically();
  display.drawString(0, 0, ipstat);
  display.display();
  
}

标签: c++arduinoesp8266arduino-esp8266esp8266wifi

解决方案


使用toString()来自ESP8266WiFi 库(第 162-173 行)的方法。

String ipstat = WiFi.localIP().toString();

推荐阅读