烟雾报警器

AO模拟信号(任意值) DO 数字信号(0/1 高低电平)


//烟雾报警
#define MQPIN 13   //AO 口 模拟信号



void setup() {
    //波特率设置
  Serial.begin(115200);
  //烟雾报警器 AO 模拟信号 输入模式
  pinMode(MQPIN, INPUT);

}

void loop() {

  //烟雾 读取烟雾信号
  int val = digitalRead(MQPIN);

    Serial.print(F("smoke: "));
    Serial.println(val);
    delay(1000);

}

DHT11温湿度 + 烟雾 +0.96OLED + U8g2显示

// dht11
#include "DHT.h"
//DHT11数据引脚
#define DHTPIN 2     
#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);

//烟雾报警
#define MQPIN 13  

//U8g2
#include <U8g2lib.h>
//u8g2 代替屏幕 设置SCL 5  SDA 4
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE, /* clock=*/5, /* data=*/4); 

void setup() {
    //波特率设置
  Serial.begin(115200);



   //dht11
  dht.begin();

  u8g2.begin();
  u8g2.enableUTF8Print(); 
  u8g2.setFont(u8g2_font_wqy12_t_gb2312); //此处建议用gb2312字库,完整支持所有中文编码
  u8g2.setCursor(0, 15);
  u8g2.print("正在加载........."); 
  u8g2.sendBuffer();
  //烟雾报警器 AO 模拟信号 输入模式
  pinMode(MQPIN, INPUT);

}

void loop() {

  u8g2.clearDisplay(); // 清除显示数据及屏幕

  //烟雾 读取烟雾信号
  int val = digitalRead(MQPIN);

  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

   // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

   // Compute heat index in Fahrenheit (the default)
   float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
   float hic = dht.computeHeatIndex(t, h, false);

    Serial.print(F("Hum: "));
    Serial.print(h);
    Serial.print(F("%  Temp: "));
    Serial.print(t);
    Serial.print(F("°C "));
    Serial.print(f);
    Serial.print(F("°F  heat index: "));
    Serial.print(hic);
    Serial.print(F("°C "));
    Serial.print(hif);
    Serial.print(F("°F"));
    Serial.print(F("  smoke: "));
    Serial.println(val);

    u8g2.setCursor(0, 12);
    u8g2.print("湿度:");
    u8g2.println(String(h) + "%"); 
    u8g2.setCursor(0, 26);
    u8g2.print("温度:");
    u8g2.println(String(t) + "°C"); 
    //烟雾
    u8g2.setCursor(0, 42);
    u8g2.print("烟雾:");
    u8g2.println(String(val)); 

    u8g2.setCursor(84, 58);
    u8g2.println(millis()); 

    u8g2.sendBuffer();
    delay(10);

}