ESP8266 выдает ошибку

Тема в разделе "ESP8266, ESP32", создана пользователем Timofey, 3 ноя 2017.

  1. Timofey

    Timofey Нуб

    При компиляции скетча выдает ошибку
    SMART_TEMPERATURE.ino: In function 'void loop()':
    SMART_TEMPERATURE.ino:33:26: error: invalid conversion from 'const char*' to 'const uint8_t* {aka const unsigned char*}' [-fpermissive]
    In file included from SMART_TEMPERATURE.ino:2:0:
    C:\Users\777\Documents\Arduino\libraries\ESP8266/ESP8266.h:347:10: error: initializing argument 1 of 'bool ESP8266::send(const uint8_t*, uint32_t)' [-fpermissive]
    bool send(const uint8_t *buffer, uint32_t len);
    ^
    Ошибка компиляции.
    Вот сам скетч
    2_theremometer.ino
    #include "ESP8266.h"
    #include <SoftwareSerial.h>
    #include <math.h>

    #define SSID "имя_твоего_Wi-Fi"
    #define PASSWORD "пароль_твоего_Wi-Fi"
    #define TEMP_PIN A0

    SoftwareSerial mySerial(4, 5);
    ESP8266 wifi(mySerial);
    String name = "твой_ключ";

    void setup(void) {
    Serial.begin(9600);
    if (wifi.joinAP(SSID, PASSWORD)) {
    Serial.println("https://dweet.io/follow/" + name);
    } else {
    Serial.println("Wi-Fi connection error");
    }
    }

    void loop(void) {
    float v_temp = 1023.0 / analogRead(TEMP_PIN) - 1.0;
    float temp = 1.0 / ( -log(v_temp) / 3977.0
    + 1.0 / 295.0 ) - 273.0;
    if (wifi.createTCP("www.dweet.io", 80)) {
    String data = "GET /dweet/for/" + name + "?";
    data += "temp=" + String(temp) + " HTTP/1.1\r\n";
    data += "Host: dweet.io\r\n\r\n";
    wifi.send(data.c_str(), data.length());
    wifi.releaseTCP();
    } else {
    Serial.println("create TCP error");
    }
    delay(1000);
    }
     
  2. DIYMan

    DIYMan Guest

    Что именно вам непонятно в этих ошибках? Ясно же сказано - функция ждёт указатель на const uint8_t, вы ей скармливаете указатель на const char. Приведение типов решает:

    Код (C++):
    wifi.send((const uint8_t*) data.c_str(), data.length());
     
    acos нравится это.