ESP8266-01S DHT11 OLED显示程序-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2436|回复: 4

ESP8266-01S DHT11 OLED显示程序

[复制链接]
发表于 2021-8-25 18:50 | 显示全部楼层 |阅读模式
看到一些求助帖子中关于ESP8266-01S  DHT11和IIC OLED无法工作的问题。这里首先说明的是8266默认SDA,SCL为GPIO4,GPIO5.若用ESP8266-01S的TX(GPIO1),RX(GPIO3)来代替就需在
void setup() 中添加 Wire.begin(1,3);语句。下面给出ESP8266-01S  DHT11 OLED显示程序仅供参考。


#include <dht11.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 0
Adafruit_SSD1306 display(OLED_RESET);


#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2


#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH  16
dht11 DHT11;
#define DHT11PIN 2
void setup() {
  Wire.begin(1,3);
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}

void loop() {
  display.clearDisplay();
  int chk = DHT11.read(DHT11PIN);
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("Tem:");
  display.setCursor(48,0);
display.println((float)DHT11.temperature);
  display.setCursor(110,0);
  display.println("C");
  display.setCursor(0,18);
  display.println("Hum:");
  display.setCursor(48,18);
display.println((float)DHT11.humidity);
  display.setCursor(110,18);
  display.println("%");
  display.display();
  delay(1000);

}

发表于 2021-8-27 15:00 | 显示全部楼层
感谢解决问题
发表于 2021-8-27 15:42 | 显示全部楼层
请问gpio2被dht11占用了还能用来控制继电器吗?
 楼主| 发表于 2021-8-27 18:41 | 显示全部楼层
tnn0220 发表于 2021-8-27 15:42
请问gpio2被dht11占用了还能用来控制继电器吗?

可以的,把上面程序中的int chk = DHT11.read(DHT11PIN);换成:
if (digitalRead(2)==LOW) digitalWrite(0,!digitalRead(0));
else int chk = DHT11.read(DHT11PIN);在 void setup()添加:
pinMode(2, INPUT);
pinMode(0, OUTPUT);
digitalWrite(0, LOW);
就可用接在pgio2上的按键来控制pgio0上的继电器了.
发表于 2021-10-23 16:05 | 显示全部楼层
谢谢分享,拆眼学习了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 10:36 , Processed in 0.223456 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表