用Arduino做温湿度显示器是代码出现问题

2018-10-025238
AI 快速预览详细 收起
本文介绍了如何使用Arduino和DHT22传感器制作温湿度显示器,并解决常见的代码问题。通过检查传感器的读取状态码,如Checksum error和Time out error,可以快速定位并解决问题。文章还提供了详细的代码示例,帮助初学者和STEM教育者顺利完成项目。
[mw_shl_code=xml,true]// 128x64 I2C OLED
#include "DHT.h"
// DHT22数字传感器库
#include "U8glib.h"
// OLED库

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);    // I2C

#define DHTPIN 2
#define DHTTYPE DHT22   // DHT 22  (AM2302)
DHT dht(DHTPIN, DHTTYPE);

void draw(void) {

  u8g.setFont(u8g_font_8x13); //使用8x13大小的字符
  u8g.setPrintPos(0, 20); // 对应 x,y 轴值
  u8g.print("HUMI(%) :");
  u8g.setPrintPos(73, 20);
  u8g.print((float)DHT22.humidity);
  u8g.setPrintPos(0, 40);
  u8g.print("TEMP(oC):");
  u8g.setPrintPos(73, 40);
  u8g.print((float)DHT22.temperature);
}

void setup()
{
  Serial.begin(9600);//串口波特率
  Serial.println("DHT22 TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT22LIB_VERSION);
  Serial.println();
}

void loop()
{
  Serial.println("\n");

  int chk = DHT22.read(DHT22PIN);

  Serial.print("Read sensor: ");
  switch (chk)
  {
    case DHTLIB_OK:
                Serial.println("OK");
                break;
    case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
    case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
    default:
                Serial.println("Unknown error");
                break;
  }

  Serial.print("Humidity (%): ");
  Serial.println((float)DHT22.humidity,2);

  Serial.print("Temperature (oC): ");
  Serial.println((float)DHT22.temperature,2);

  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );

  delay(10000);
}[/mw_shl_code]

12.png (28.3 KB, 下载次数: 3352)

Arduino温湿度显示器代码调试指南_image_3.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
gada888
gada888
学习了
FishGan
FishGan
把59行的代码[mw_shl_code=cpp,true]Serial.println((float)DHT22.humidity,2);[/mw_shl_code]改成
[mw_shl_code=cpp,true]Serial.println((float)dht.humidity,2);[/mw_shl_code]
就行了。62行也对应改一下
390880244
390880244
作者
回复FishGan
大神!
390880244
390880244
作者
回复FishGan
大神!
- 没有更多了 -