#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ThingSpeak.h>
#include <WiFi.h>
WiFiClient client;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define SECRET_CH_ID 2109996 // replace 0000000 with your channel number
#define SECRET_WRITE_APIKEY "IP5YVTUBIYWHA5C0" // replace XYZ with your channel write API Key
#define portPin 14 // define MQ2 analog pin
#define ledPin 27 // define MQ2 digital pin
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección del dispositivo I2C y dimensiones del display
int potValor = 0; // khai báo biến chứa giá trị biến trở
unsigned long dataMillis = 0;
void setup() {
Serial.begin(115200);
pinMode(portPin, INPUT);// se configura el pin del boton como entrada
pinMode(ledPin, OUTPUT); // se configura el pin de la sirena como salida
lcd.init(); // Inicialización del LCD 16x2
delay(1000);
WiFi.disconnect();
WiFi.begin(ssid, pass);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(300);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();
ThingSpeak.begin(client); // Initialize ThingSpeak
}
// funcion principal
void loop() {
potValor = analogRead(portPin);
Serial.println(potValor);
if(potValor >= 1365) {
digitalWrite(ledPin, HIGH);
lcd.setCursor(0, 0); // Posicionar el cursor en la primera línea, primera columna
lcd.print("LED encendido"); // Mostrar el mensaje en el LCD 16x2
}else if(potValor < 1365){
digitalWrite(ledPin, LOW);
lcd.setCursor(0, 0);
lcd.print("LED apagado");
}
ThingSpeak.setField(1, potValor);
if (millis() - dataMillis > 20000)
{
int x = ThingSpeak.writeFields(SECRET_CH_ID, SECRET_WRITE_APIKEY);
if(x == 200){
Serial.println("Channel update successful.");
}
else {
Serial.println("Problem updating channel. HTTP error code " + String(x));
}
}
delay(100);
}