#include <WiFi.h>
#include "ThingSpeak.h"
#include <Adafruit_GFX.h> // Librería para la gráfica de pantalla OLED
#include <Adafruit_SSD1306.h> // Librería de la pantallas OLED
#include <OneWire.h> // Librería del protocolo OneWire
#define SCREEN_WIDTH 128 // Ancho de la pantalla OLED
#define SCREEN_HEIGHT 64 // Alto de la pantalla OLED
#define OLED_RESET -1 // Pin de reset de la pantalla (no se utiliza)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// datos del wifi
const char* WiFi_NAME = "Wokwi-GUEST";
const char* WiFi_PASSWORD = "";
// variables
const int channelID = 2719102;
const int numberChannel = 1;
const char* readApikey = "IE40D2OKPIDJPZM1";
int readValue;
// definir pines
#define pinButton 27
WiFiClient client;
void setup(){
// comunicación serial
Serial.begin(115200);
// definimos entradas y salidas
pinMode(pinButton, INPUT_PULLUP);
// Inicializamos la pantalla OLED con la dirección I2C por defecto 0x3C
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("No se pudo encontrar la pantalla SSD1306")); // Mensaje de error si la pantalla no se encuentra
for (;;); // Bucle infinito en caso de error
}
delay(2000); // Espera 2 segundos para dar tiempo a la pantalla
display.clearDisplay(); // Limpia el buffer de la pantalla
display.display(); // Muestra el buffer inicial en la pantalla
// configuracion del wifi
WiFi.begin(WiFi_NAME, WiFi_PASSWORD);
while (WiFi.status()!= WL_CONNECTED) {
delay(1000);
Serial.println("WiFi no conectado");
}
Serial.println("¡WiFi conectado!");
Serial.print("IP local");
Serial.println(WiFi.localIP());
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop(){
// botón
if(!digitalRead(pinButton)) {
Serial.println("Leyendo canal de thungspeak....");
readValue = ThingSpeak.readIntField(channelID, numberChannel, readApikey);
int statusCode = ThingSpeak.getLastReadStatus();
if( statusCode == 200) {
Serial.println("Valor leido: " + String(readValue));
}
Serial.println("HTTP error code " + String(statusCode));
// Mostrar los valores en la pantalla OLED
display.clearDisplay(); // Limpia la pantalla OLED
display.setTextSize(1); // Establece el tamaño del texto
display.setTextColor(WHITE); // Establece el color del texto a blanco
display.setCursor(0, 0); // Establece la posición del cursor en la pantalla
display.println(WiFi.localIP() ); // Imprime el valor de la temperatura
display.println(readValue);
display.display(); // Actualiza la pantalla para mostrar los nuevos datos
}
}