es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Los datos de internet de Arduino desaparecen después de 10 segundos.

Soy nuevo en Arduino, hoy intenté conectarme a WiFi con mi placa TTGO y obtener datos de una URL. Se conecta correctamente al WiFi, obtiene los datos de la URL, pero después de 10 segundos todos los datos desaparecen.

Entiendo que esto sucede debido al comando tft.fillScreen(TFT_GREY);, pero no entiendo por qué la función no continúa, después de ese comando hay otros comandos que obtienen esos datos y también comandos para imprimirlos.

Mi plan era actualizar los datos de la URL cada 10 segundos.

Mi código:

#include <tft_espi.h> // Biblioteca de gráficos y fuentes para el chip controlador ST7735
#include <spi.h>
#include <wifi.h>
#include <httpclient.h>

TFT_eSPI tft = TFT_eSPI(); // Invocar la biblioteca, pines definidos en User_Setup.h

#define TFT_GREY 0x5AEB // Nuevo color

const char* ssid = "MiRed";
const char* password =  "contraseña";
int number = 10;

void setup(void) {
  tft.init();
  tft.setRotation(1);

  delay(4000);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    tft.println("Conectando a WiFi..");
  }

  tft.println("Conectado al WiFi");

}

void loop() {
  refreshData();
}

void refreshData()
{
  tft.fillScreen(TFT_GREY);

  if ((WiFi.status() == WL_CONNECTED)) {

    HTTPClient http;

    http.begin("http://ejemplo.com"); // Especificar la URL
    int httpCode = http.GET(); // Realizar la solicitud

    if (httpCode > 0) {

        String payload = http.getString();
        tft.print(payload);
    }

    else {
      tft.println("Error en la solicitud HTTP");
    }

    http.end(); // Liberar los recursos
  }

  number++;
  delay(10000);
}

¡Gracias!</httpclient.h></wifi.h></spi.h></tft_espi.h>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está con el comando tft.fillScreen(TFT_GREY) en la función refreshData(). Este comando está llenando la pantalla con gris, lo que hace que todos los datos previamente mostrados desaparezcan. La función continúa después de este comando e intenta obtener datos de una URL e imprimirlos, pero como la pantalla ya está llena de gris, los nuevos datos no son visibles.

    Si quieres actualizar los datos de la URL cada 10 segundos, podrías intentar mover el comando tft.fillScreen(TFT_GREY) fuera de la función refreshData() y llamarlo solo una vez en la función setup(). De esta manera, la pantalla solo se llenará de gris una vez al principio y los datos se mostrarán encima.

    Otra opción sería borrar solo el área específica donde se muestran los datos utilizando el comando tft.fillRect() antes de imprimir los nuevos datos.

    ¡Espero que esto ayude!

Comments are closed.