arduino使用oled代码_和孩子一起做个显示温湿度的oled屏桌面摆件[青创小电视]

青创小电视——显示温湿度的oled屏桌面摆件/家庭亲子教育DIY

简介:

使用主控板arduino nano采集温湿度传感器dht11的温湿度数据,同时显示在1.3寸分辨率为128*64的oled屏幕上;通过usb串口与电脑连接,可通过arduino ide等编译器进行程序烧录,还可以更换屏幕显示的风格和内容;配合3d打印的卡通或定制外壳,让显示器电路不再尴尬。

af8fda4abc53baad84d2ed7deb0bb49b.png

你和孩子的桌面小精灵

材料清单:

Oled I2C屏幕

1

DHY11温湿度模块

1

Arduino nano主控板

1

杜邦线(母对母)

7

M3*6螺丝+螺母

4

3d打印外壳

3

21751656940f017d453eeded5da293af.png

各模块参数

工作环境:

Arduino ide 烧录软件

加载U8g2lib.h 显示屏u8g2库

加载SimpleDHT.h 传感器DHT库

3d打印机(外壳非3d打印可不选)

接线图:

48c94888aced2c9e5d48221e0218f102.png

接线示意图

烧录代码:

758fda819781ca5b1b713a0237bbfb34.png

开源代码和硬件

#include //调用显示库

#include //调用传感库

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0 ,2);//显示屏设定

int pinDHT11 = A2;//定义DTH11的数据口为A2

SimpleDHT11 dht11(pinDHT11);

void setup(void)

{

u8g2.begin();

Serial.begin(19200);//设定波特率19200

}

void loop(void)

{

byte temperature = 0; //温度参数

byte humidity = 0; //湿度参数

int err = SimpleDHTErrSuccess; //判断参数

if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess)

{ Serial.print("Read DHT11 failed, err=");

Serial.println(err);

delay(1000);

return;}

u8g2.clearDisplay(); // 清屏

u8g2.clearBuffer(); // 清空显示设备内部缓冲区

u8g2.drawCircle(32, 32,28, U8G2_DRAW_ALL);//圆圈1位置大小

u8g2.drawCircle(98, 32,28, U8G2_DRAW_ALL);//圆圈2位置大小

u8g2.setFont(u8g2_font_fub20_tn); //设置字体

u8g2.setCursor(16, 37); //设置光标处

u8g2.print((int)temperature); //输出温度内容

u8g2.setCursor(84, 37); //设置光标处

u8g2.print((int)humidity); //输出湿度内容

u8g2.setFont(u8g_font_unifont);u8g2.drawStr(28, 55, "c");

u8g2.drawStr(94, 55, "%"); //单位

u8g2.sendBuffer(); // 显示缓冲区内容

delay(10000); // 显示刷新内容

}

资料下载:

a0d3e5920720be119d7656eee29f7fca.png

3d打印外壳

本文使用3d外壳模型下载地址:http://www.dayin.la/product/111361.html

文本使用代码等下载地址: https://www.arduino.cn/thread-84087-1-1.html

如果想一站式购齐,欢迎选购我们工坊官方的diy套装:

https://item.taobao.com/item.htm?spm=a2126o.11854294.0.0.412d4831kn3wsw&id=587020695240

8ff35ed393dc4ca42dcd55b0d96b72ff.png

适合家庭亲子diy制作

工作原理:

dht11数字温湿度传感器包括一个电阻式感湿元件、一个NTC 测温元件及一个八位单片机,dht11使用单总线协议(1-wire,源于达拉斯半导体公司Dallas Semiconductor现已被美信半导体MaximIntegrated),一次传送五组8位的数据,分别为:湿度高八位、湿度低八位、温度高八位、温度低八位以及八位的校验,如:00110010 00000000 0010100 00000000 01000110,

验证通过: 00110010+00000000+0010100+00000000=01000110

湿度:00110010(B)=32(H)=50(D)%RH

温度:0010100(B)=14(H)=20(D)℃

b2299ebe2f54e14c71c3f00c96a7d84c.png

屏幕尺寸图

屏幕采用通信方式为I2C的oled屏幕,驱动屏幕需要设置3个参数:设备地址、寄存器地址和命令,可参考Oscar对于屏幕的分析https://oscarliang.com/arduino-oled-display-library/

此外显示的像素地址的三种模式分别为:页地址模式,水平地址模式和垂直地址模式,具体方式可下载数据手册了解详情。

5ec1e989f30f065d795300eb0f1a954d.png

混色搭配的3d打印外壳

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值