ESP8266-01S DHT11 OLED显示程序
看到一些求助帖子中关于ESP8266-01SDHT11和IIC OLED无法工作的问题。这里首先说明的是8266默认SDA,SCL为GPIO4,GPIO5.若用ESP8266-01S的TX(GPIO1),RX(GPIO3)来代替就需在void setup() 中添加 Wire.begin(1,3);语句。下面给出ESP8266-01SDHT11 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_WIDTH16
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);
}
感谢解决问题 请问gpio2被dht11占用了还能用来控制继电器吗? 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上的继电器了. 谢谢分享,拆眼学习了
页:
[1]