Problemas con ESP32 con pantalla 3.5 inch RPi Display

Hola a todos!.
Estoy trabajando en un proyecto con la ESP32 y una pantalla RPI Display 3.5, el proyecto consiste en poder mostrar los datos de unos sensores DS18b20 de los cuales ya tengo todo el menu, pero no logro hacer que se visualicen los valores del sensor, estoy ocupando un sensor solamente para hacer la prueba, lo que espero es que cuando ya quede uno poder poner los otros que me faltan, espero me puedan ayudar, aqui pongo el codigo, espero su ayuda y gracias.

#include <SD.h>
#include <FS.h>
TFT_eSPI tft = TFT_eSPI();
#include <OneWire.h>
#include <DallasTemperature.h>
//Comunicar que vamos a utilizar la interfaz oneWire
OneWire oneWire(4);
DallasTemperature sensors (&oneWire);
#define CALIBRATION_FILE "/TouchCalData5"
#define REPEAT_CAL false
//Variable para temperatura en display
uint16_t selectColor[2] = {TFT_CYAN, TFT_ORANGE};
int setSelect = 0;
char setPoint[2][10] = {"2-8 C", "15-25 C"};
//Variable para guardar en el display
uint16_t gColor[2] = {TFT_DARKGREEN, TFT_RED};
int gSelect = 0;
char gBoton[2][10] = {"Guardar", "Parar"};
//Variable para evaporador, cabina, puerta, centro y ambiental
char displayLabel[5][20] = {"Evaporador", "Cabina", "Puerta", "Centro", "Ambiental"};
#define cDisplay TFT_DARKGREY
int32_t dX = 10;
int32_t dY[5] = {20, 100, 180, 260, 340};
int32_t wX = 140;
int32_t hY = 60;
int32_t cwX = 300;
int32_t dTx = 150, wTx = 160;
//Variables temperatura
int sensorIndex = 0;
String tLabel[5] = {" ", " ", " ", " ", " "};
//Color de temperatura
uint16_t cTemp[3] = {TFT_RED, TFT_GREEN, TFT_DARKGREY};
//Rango de temperatura
float rTemp[2][2] = {{2, 8}, {15, 25}}, tolerance = 0.5;
int fSensor[5] = {0, 0, 0, 0, 0};
uint16_t x, y;
bool fMenu = false;

void setup() {
  sensors.begin();
  tft.init();
  tft.setRotation(0);
  touch_calibrate();
  tft.fillScreen(TFT_BLACK);
  Serial.begin(115200);
  tft.fillRect(0, 0, 320, 480, TFT_WHITE);
  dDisplay();
}

void loop() {
  if (tft.getTouch(&x, &y)) {
    sMenu();
  }
  readTemp();
}
void dDisplay() {
  tft.setTextColor(TFT_WHITE);
  tft.setTextSize(2);
  /* Comandos para acomodar el texto
    TL_DATUM = Top left, TC_DATUM = Top centre, TR_DATUM = Top right, ML_DATUM = Middle left
    MC_DATUM = Middle centre, MR_DATUM = Middle right, BL_DATUM = Bottom left, BC_DATUM = Bottom centre
    BR_DATUM = Bottom right*/
  tft.setTextDatum(MC_DATUM);
  for (uint8_t i = 0; i < 5; i++) {
    tft.fillRect(dX, dY[i], wX, hY, cDisplay);
    tft.drawString(displayLabel[i], dX + (wX / 2), dY[i] + (hY / 2));
    tft.drawRect(dX, dY[i], cwX, hY, TFT_BLACK);
  }
  tft.fillRect(20, 420, 120, 40, selectColor[setSelect]);
  tft.drawRect(20, 420, 120, 40, TFT_BLACK);
  tft.drawString(setPoint[setSelect], 80, 440);

  tft.fillRect(180, 420, 120, 40, gColor[gSelect]);
  tft.drawRect(180, 420, 120, 40, TFT_BLACK);
  tft.drawString(gBoton[gSelect], 240, 440);
}
void sDisplay() {
  if ((x > 20 && x < 140) && (y > 420 && x < 440) && !fMenu) {
    setSelect = 1 - setSelect;
    dDisplay();
  } else if ((x > 180 && x < 300) && (y > 420 && x < 440) && !fMenu) {
    gSelect = 1 - gSelect;
    dDisplay();
  }
}
void sMenu() {
  if (y < 410 && !fMenu) {
    for (uint8_t i = 0; i < 5; i++) {
      if ((x > dX && x < (dX + cwX)) && (y > dY[i] && y < (dY[i] + hY)) && !fMenu) {
        sensorIndex = i;
        fMenu = true;
        //tft.fillRect(0, 0, 320, 480, TFT_WHITE);
        tft.fillRect(0, 0, 320, 480, cTemp[fSensor[sensorIndex]]);
        dTemp();
      }
    }
  } else if (y > 410 && !fMenu) {
    sDisplay();
  } else if (y > 410 && fMenu) {
    if ((x > 110 && x < 220) && (y > 420 && y < 460) && fMenu) {
      fMenu = false;
      tft.fillRect(0, 0, 320, 480, TFT_WHITE);
      dDisplay();
    }
  }
}
void dTemp() {
  //Muestra pantalla de color
  tft.setTextColor(TFT_BLACK);
  tft.setTextSize(2);
  tft.setTextDatum(MC_DATUM);
  tft.drawRect(30, 50, 260, 60, TFT_BLACK);
  tft.drawString("Sensor", 85, 80);
  tft.drawString(displayLabel[sensorIndex], 200, 80);

  tft.fillRect(110, 420, 100, 40, TFT_DARKGREY);
  tft.drawRect(110, 420, 100, 40, TFT_BLACK);
  tft.drawString("Regresar", 160, 440);
}
void readTemp() {
  sensors.requestTemperatures();
  int temperatureC = sensors.getTempCByIndex(0);
  if (!fMenu) {
    tft.setTextColor(TFT_WHITE);
    tft.setTextSize(2);
    tft.setTextDatum(MC_DATUM);
    for (int i = 0; i < 5; i++) {
      tft.fillRect(dTx, dY[i], wTx, hY, cTemp[fSensor[i]]);
      tft.drawString(tLabel[i] + " C", dTx + (wTx / 2), dY[i] + (hY / 2));
      tft.drawRect(dX, dY[i], cwX, hY, TFT_BLACK);
      Serial.println(tLabel[i]);
    }
  } else {
    tft.setTextColor(TFT_BLACK);
    tft.setTextSize(5);
    tft.fillRect(0, 200, 320, 80, cTemp[fSensor[temperatureC]]);
    tft.drawString(tLabel[temperatureC], 160, 240);
    
  }
  Serial.println (temperatureC);
}
void touch_calibrate() {
  uint16_t calData[5];
  uint8_t calDataOK = 0;
  if (!SPIFFS.begin()) {
    SPIFFS.format();
    SPIFFS.begin();
  }
  if (SPIFFS.exists(CALIBRATION_FILE)) {
    if (REPEAT_CAL) {
      SPIFFS.remove(CALIBRATION_FILE);
    } else {
      File f = SPIFFS.open(CALIBRATION_FILE, "r");
      if (f) {
        if (f.readBytes((char *)calData, 14) == 14)
          calDataOK = 1;
        f.close();
      }
    }
  }

  if (calDataOK && !REPEAT_CAL) {
    tft.setTouch(calData);
  } else {
    tft.fillScreen(TFT_BLACK);
    tft.setCursor(20, 0);
    tft.setTextFont(2);
    tft.setTextSize(1);
    tft.setTextColor(TFT_WHITE, TFT_BLACK);

    tft.println("Touch corners as indicated");

    tft.setTextFont(1);
    tft.println();

    if (REPEAT_CAL) {
      tft.setTextColor(TFT_RED, TFT_BLACK);
      tft.println("Set REPEAT_CAL to false to stop this running again!");
    }

    tft.calibrateTouch(calData, TFT_MAGENTA, TFT_BLACK, 15);

    tft.setTextColor(TFT_GREEN, TFT_BLACK);
    tft.println("Calibration complete!");

    File f = SPIFFS.open(CALIBRATION_FILE, "w");
    if (f) {
      f.write((const unsigned char *)calData, 14);
      f.close();
    }
  }
}

ya hice distintos intentos para solucionarlo pero no ha funcionado.
Agradecería mucho cualquier apoyo/idea/regaño/corrección.

O.Salas

En el código no has incluído la librería TFT_eSPI.

No queda claro si al menos el menú se muestra en pantalla así descartamos problemas referidos al manejo de la librería.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.