专栏首页Linux学习日志esp8266+oled+DHT 11温湿度显示

esp8266+oled+DHT 11温湿度显示

设备清单

NodeMCU(esp8266)开发板一块
oled屏4pin i2c引脚一块
DHT11温湿度传感器一个
杜邦线

esp8266连接oled

3.3V --- VCC
G (GND) --- GND
D1(GPIO5)--- SCL
D2(GPIO4)--- SDA

esp8266连接DHT11

VCC ---- 3V3(+)
GND --- -GND(-)
输出---- D5

(NodeMcu板子)

(oled屏)

(DHT11)

安装库文件

打开Arduino,点击项目>加载库>管理库 搜索SSD1306然后安装这个

搜索GFX安装

搜索DHT安装

搜索Adafruit Unified Sensor安装

上传代码

代码:

/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com  
*********/

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

#define DHTPIN 14     // Digital pin connected to the DHT sensor

// Uncomment the type of sensor in use:
#define DHTTYPE    DHT11     // DHT 11
//#define DHTTYPE    DHT22     // DHT 22 (AM2302)
//#define DHTTYPE    DHT21     // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);

  dht.begin();

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
}

void loop() {
  delay(5000);

  //read temperature and humidity
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
  }
  // clear display
  display.clearDisplay();
  
  // display temperature
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Temperature: ");
  display.setTextSize(2);
  display.setCursor(0,17);
  display.print(t);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("C");
  
  // display humidity
  display.setTextSize(1);
  display.setCursor(0, 35);
  display.print("Humidity: ");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(h);
  display.print(" %"); 
  
  display.display(); 
}

效果图

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nginx 防盗链

    根据referer的字段,通过referer告诉服务器该网页是从哪个页面链接过来的,一旦检测到来源不是本站即进行阻止或者返回指定的页面

    剧终
  • 部署Tomcat及负载均衡

    解压后生成apache-tomcat-7.0.54文件夹,将该文件夹移动到/usr/local 下,并改名为tomca

    剧终
  • Nginx开启Gzip压缩

    GZIP是网站压缩加速的一种技术,对于开启后可以加快我们网站的打开速度,原理是经过服务器压缩,客户端浏览器快速解压的原理,可以大大减少了网站的流量

    剧终
  • Javascript数组常用方法[包含MS AJAX.NET的prototype扩展方法]示例

    看了JefferyZhao的MSDN web cast视频教程,亲自实践了一下,代码如下: <%@ Page Language="C#" AutoEvent...

    菩提树下的杨过
  • display属性,及其区别

    pitaojin
  • Series(三):Series和ndarray对比学习

    1、Series和ndarray都可以通过索引和切片访问元素,切片返回的是原来的视图,索引返回的是原来的拷贝。

    朱小五
  • 手撕numpy(二):各种特性和简单操作

    记住一句话:numpy中的数据类型转换,不要使用x.dtype修改元素的数据类型,最好用x.astype()这种方式。

    朱小五
  • Series(五):Series的增、删、改、查

    朱小五
  • ASP.NET AJAX(5)__JavaScript原生类型以及Microsoft AJAX Library什么是Microsoft AJAX LibraryObject原生类型Object.pro

    什么是Microsoft AJAX Library ASP.NET AJAX的客户端部分 纯客户端框架 提供了JavaScript扩展和基础类库 Object原...

    小白哥哥
  • 居中方案

    mcq

扫码关注云+社区

领取腾讯云代金券