Hola Amigos, estoy trabajando en un pequeño proyecto que tiene que ver con domótica, la idea principal es que el sensor MQ-2 me indique el valor de gas detectado, y al superarse cierto umbral que yo he definido en 1200 se encienda un led y un buzzer. mi problema es que el buzzer al conectarlo a la placa ESP32 WROOM 32 siempre está sonando y nunca esta apagado. un amigo me dijo que es porque estos módulos tienen la polaridad al revés, en base a esto, yo en el código he probado cambiando los estados de HIGH a LOW y viceversa, pero aun así no logro resolverlo.
agradecería su revisión y si alguien tuvo el mismo problema, pues que me pueda ayudar. voy a dejar el código abajo para su revisión.
/*
Sketch generated by the Arduino IoT Cloud Thing "Untitled"
https://create.arduino.cc/cloud/things/b36791e7-9dc5-4dc2-8f53-09a42e90a4fe
Arduino IoT Cloud Variables description
The following variables are automatically generated and updated when changes are made to the Thing
float hUMEDAD;
float tEMPERATURA;
int gAS;
Variables which are marked as READ/WRITE in the Cloud Thing will also have functions
which are called when their values are changed from the Dashboard.
These functions are generated with the Thing and added at the end of this sketch.
*/
#include <Adafruit_SSD1306.h>
#include <splash.h>
#include "thingProperties.h"
#include <DHT.h>
#include <U8g2lib.h> // Incluir la biblioteca U8g2
#define DHTPIN 26 // Pin al que está conectado el sensor DHT
#define DHTTYPE DHT11 // Tipo de sensor DHT que estás utilizando (DHT11 en este caso)
#define MQ_PIN 32 // Pin analógico al que está conectado el sensor MQ-2
#define LED_PIN 13 // Pin al que está conectado el LED
#define BUZZER_PIN 23 // Pin al que está conectado el zumbador
DHT dht(DHTPIN, DHTTYPE);
U8G2_SSD1306_128X64_NONAME_F_SW_I2C display(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // Inicializar la pantalla OLED
float lastHumidity = 0;
float lastTemperature = 0;
int lastGasValue = 0;
void setup() {
Serial.begin(9600);
delay(1500);
initProperties();
pinMode(LED_PIN, OUTPUT); // Establece el pin del LED como salida
pinMode(BUZZER_PIN, OUTPUT); // Establece el pin del zumbador como salida
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
dht.begin();
// Inicializar la pantalla OLED
display.begin();
display.clearDisplay();
display.setFont(u8g2_font_ncenB08_tr); // Establecer la fuente para el texto
}
void loop() {
ArduinoCloud.update();
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Error al leer el sensor DHT!");
return;
}
hUMEDAD = humidity; // Actualiza la variable de humedad en Arduino IoT Cloud
tEMPERATURA = temperature; // Actualiza la variable de temperatura en Arduino IoT Cloud
// Lectura del sensor MQ-2
int gasValue = analogRead(MQ_PIN);
gAS = gasValue; // Actualiza la variable de gas en Arduino IoT Cloud
// Enciende el LED y el buzzer si el nivel de gas es mayor que 1200
if (gasValue > 1200) {
digitalWrite(LED_PIN, HIGH); // Enciende el LED
digitalWrite(BUZZER_PIN, HIGH); // Enciende el zumbador
} else {
digitalWrite(LED_PIN, LOW); // Apaga el LED
digitalWrite(BUZZER_PIN, LOW); // Apaga el zumbador
}
// Mostrar los valores de temperatura, humedad y gas solo si han cambiado
if (humidity != lastHumidity || temperature != lastTemperature || gasValue != lastGasValue) {
display.clearDisplay();
display.setFont(u8g2_font_ncenB08_tr); // Establecer la fuente para el texto
// Posicionamiento del texto
display.setCursor(0, 10);
display.print("Temperatura: ");
display.print(temperature);
display.println(" C");
display.setCursor(0, 25);
display.print("Humedad: ");
display.print(humidity);
display.println(" %");
display.setCursor(0, 40);
display.print("Gas: ");
display.println(gasValue);
display.sendBuffer(); // Mostrar los cambios en la pantalla
// Actualizar los valores
lastHumidity = humidity;
lastTemperature = temperature;
lastGasValue = gasValue;
}
delay(2000); // Puedes ajustar el intervalo de lectura según sea necesario
}

