Тот же код работает на Arduino IDE, но не в PlatformIO IDE

arduino-ide c++ esp32 platformio

Я столкнулся с этой странной проблемой. Мой код работает просто отлично, когда я загружаю его в ESP32 из Arduino IDE. Тот же самый код не работает, когда я загружаю его с помощью PlatformIO IDE. В обеих средах используются одни и те же версии библиотек.

Я читал, что в PlatformIO вам, возможно, придется использовать прямое объявление (то, что Arduino IDE решает из коробки). Я не знаю, так ли это на самом деле. И если это так... Я не знаю, как это применить.

Может ли кто-нибудь помочь мне с этим?

#include <Arduino.h>
#include <DHT.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

#define DHTPIN 23
#define DHTTYPE DHT11

LiquidCrystal_I2C lcd(0x27,16,2);

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  
  lcd.init();
  lcd.backlight();

  Serial.begin(115200);
  dht.begin();
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  Serial.print(F("Humedad: "));
  Serial.print(h);
  Serial.print(F("% Temperatura: "));
  Serial.print(t);
  Serial.println(F("°C "));

  lcd.setCursor(0,0);
  lcd.print("Humedad: ");
  lcd.println(String(h));
  lcd.setCursor(0,1);
  lcd.print("Temp.: ");
  lcd.print(String(t));
}

РЕДАКТИРОВАТЬ:

platformio.ini

[env:fm-devkit]
platform = espressif32
board = fm-devkit
framework = arduino
monitor_speed = 115200
upload_port = COM9
lib_deps = 
    adafruit/DHT sensor library@^1.4.3
    adafruit/Adafruit Unified Sensor@^1.1.5
    marcoschwartz/[email protected]

, 👍2

Обсуждение

Что именно здесь означает "не работает"? Получаете ли вы ошибки компиляции? Или ошибки при загрузке? Или поведение кода отличается от ожидаемого после успешной компиляции и загрузки?, @chrisl

можете ли вы опубликовать свой файл platformio.ini? Проблема может заключаться в том, что вы используете другую версию ESP-IDF, которая предварительно скомпилирована в среде arduino (что необязательно при работе с platformio)., @Sim Son

@chrisl Код просто компилируется и запускается... но он ничего не выводит на дисплей, @NicoRiff

@SimSon Я добавил файл plaformio.ini, @NicoRiff

хм, файл .ini выглядит так, как я и ожидал, за исключением того, что я не знаю эту плату (я предполагаю, что вы выбрали бы точно такую же плату в Arduino IDE). Возможно, вы могли бы попробовать использовать board = esp32dev на случай, если сопоставление выводов каким-то образом испорчено для этой платы (сопоставление выводов не должно сильно зависеть от фактической платы, если она основана на ESP32. Но это моя единственная идея здесь, и я на самом деле не уверен, имеет ли это большой смысл..., @Sim Son

тоже не работает... в любом случае, спасибо, @NicoRiff

Печатается ли код на последовательном мониторе, как ожидалось? Не могли бы вы попробовать удалить символ “°” в "F ("° C ")? Не могли бы вы попробовать удалить приведения к String (lcd.println (h); вместо lcd.println(String (h));, то же самое для t`)?, @Edgar Bonet

А что находится на последовательном интерфейсе? (Вы всегда можете добавить дополнительные сообщения трассировки, чтобы выяснить, как далеко это продвинется), @KIIV

да, он печатает на последовательный монитор, как и ожидалось, @NicoRiff

Подробный вывод компиляции и компоновки для обеих сред может оказаться полезным., @timemage