开启辅助访问
设为首页
收藏本站
登录
立即注册
论坛首页
BBS
开发资料
样品购买
GitHub
邀请注册
技术博客
搜索
搜索
每日签到
本版
帖子
用户
物联网开发者社区-安信可论坛
»
论坛首页
›
开源硬件
›
小安派&M61教程合集
›
Ai-M61-Kit外设移植教程
›
【Ai-M61-32SU入门】I2C读取DHTC12温湿度
返回列表
发新帖
【Ai-M61-32SU入门】I2C读取DHTC12温湿度
[复制链接]
613
|
7
|
2024-5-26 10:47:25
|
显示全部楼层
|
阅读模式
DHTC12是一款数字温湿度传感器,采用I2C通讯,性能特征如下
照例先放上驱动文件
my_dhtc12.rar
(2.78 KB, 下载次数: 4)
2024-5-26 10:42 上传
点击文件名下载附件
使用方法:
I2C的初始化和驱动OLED时一样
void i2c_init()
{
gpio = bflb_device_get_by_name("gpio");
/* I2C0_SDA */
bflb_gpio_init(gpio, GPIO_PIN_11, GPIO_FUNC_I2C0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);
/* I2C0_SCL */
bflb_gpio_init(gpio, GPIO_PIN_10, GPIO_FUNC_I2C0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);
i2c0 = bflb_device_get_by_name("i2c0");
bflb_i2c_init(i2c0, 100000);
}
复制代码
实现发送和接收方法
uint8_t i2c_sendreg(void *i2cx,uint8_t devaddr,uint8_t *reg,uint8_t reglen,uint8_t *datas,uint16_t datalen)
{
struct bflb_i2c_msg_s msgs[2];
msgs[0].addr = devaddr;
msgs[0].flags = I2C_M_NOSTOP;
msgs[0].buffer = reg;
msgs[0].length = reglen;
msgs[1].addr = devaddr;
msgs[1].flags = I2C_M_WRITE;
msgs[1].buffer = datas;
msgs[1].length = datalen;
if(reglen > 0)
return bflb_i2c_transfer(i2cx, msgs, 2) == 0?0:1;
else
return bflb_i2c_transfer(i2cx, &msgs[1], 1) == 0?0:1;
}
uint8_t i2c_readreg(void *i2cx,uint8_t devaddr,uint8_t *reg,uint8_t reglen,uint8_t *datas,uint16_t datalen)
{
struct bflb_i2c_msg_s msgs[2];
msgs[0].addr = devaddr;
msgs[0].flags = I2C_M_NOSTOP;
msgs[0].buffer = reg;
msgs[0].length = reglen;
msgs[1].addr = devaddr;
msgs[1].flags = I2C_M_READ;
msgs[1].buffer = datas;
msgs[1].length = datalen;
if(reglen > 0)
return bflb_i2c_transfer(i2cx, msgs, 2) == 0?0:1;
else
return bflb_i2c_transfer(i2cx, &msgs[1], 1) == 0?0:1;
}
复制代码
初始化DHTC12
MY_DHTC12_DEV_Type dhtc12_dev;
void dhtc12_init()
{
dhtc12_dev.i2cx = i2c0;
dhtc12_dev.i2c_readregdatas_func = i2c_readreg;
dhtc12_dev.i2c_sendregdatas_func = i2c_sendreg;
dhtc12_dev.delayms_func = bflb_mtimer_delay_ms;
MY_DHTC12_Init(&dhtc12_dev);
}
复制代码
main函数
int main(void)
{
int16_t tem,hum;
board_init();
gpio = bflb_device_get_by_name("gpio");
bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_OUTPUT | GPIO_FLOAT | GPIO_SMT_EN | GPIO_DRV_0);
i2c_init();
dhtc12_init();
while (1) {
bflb_gpio_set(gpio, GPIO_PIN_12);
bflb_mtimer_delay_ms(1000);
bflb_gpio_reset(gpio, GPIO_PIN_12);
bflb_mtimer_delay_ms(1000);
if(MY_DHTC12_ReadHT(&dhtc12_dev,&tem,&hum) == 0)
printf("温度:%.1f℃ 湿度:%.1f%%\r\n",tem/10.0,hum/10.0);
}
}
复制代码
运行效果
、
配合上之前的OLED就能实现一个数字温湿度传感器
int main(void)
{
int16_t tem,hum;
char out[20];
board_init();
gpio = bflb_device_get_by_name("gpio");
bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_OUTPUT | GPIO_FLOAT | GPIO_SMT_EN | GPIO_DRV_0);
i2c_init();
oled_init();
dhtc12_init();
while (1) {
bflb_gpio_set(gpio, GPIO_PIN_12);
bflb_mtimer_delay_ms(1000);
bflb_gpio_reset(gpio, GPIO_PIN_12);
bflb_mtimer_delay_ms(1000);
if(MY_DHTC12_ReadHT(&dhtc12_dev,&tem,&hum) == 0)
{
printf("温度:%.1f℃ 湿度:%.1f%%\r\n",tem/10.0,hum/10.0);
sprintf(out,"T:%03.1f H:%03.1f%% ",tem/10.0,hum/10.0);
MY_OLED_SSD1315_DisplayString8x16(&oled_dev,0,4,0,out);
}
}
}
复制代码
效果
回复
使用道具
举报
WT_0213
|
2024-5-26 11:50:59
|
显示全部楼层
赞
回复
使用道具
举报
qhsj
|
2024-5-26 14:26:40
|
显示全部楼层
赞!
回复
使用道具
举报
1084504793
|
2024-5-26 17:08:05
|
显示全部楼层
赞
回复
使用道具
举报
iiv
|
2024-5-26 22:59:50
|
显示全部楼层
赞👍
回复
使用道具
举报
爱笑
|
2024-5-27 09:30:17
|
显示全部楼层
不错不错!
用心做好保姆工作
回复
使用道具
举报
楚华
|
2024-7-4 19:05:40
|
显示全部楼层
学习了
回复
使用道具
举报
sansui
|
2024-7-24 19:43:24
|
显示全部楼层
恭喜
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
手机登录
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
lvxinjia123
11
主题
38
回帖
3103
积分
论坛元老
论坛元老, 积分 3103, 距离下一级还需 9996896 积分
论坛元老, 积分 3103, 距离下一级还需 9996896 积分
积分
3103
加好友
发消息
回复楼主
返回列表
小安派&M61零基础开发教程(官方)
小安派&M61环境搭建、编译烧录教程
Ai-M61-Kit点灯教程
Ai-M61-Kit外设移植教程
小安派&M61基本系统教程
小安派&M61 DIY作品
LVGL教程玩法
问题汇总
图文推荐
【板子申请流程】新进来的同学请看这里-活动已停
2023-11-08
【中奖公告】申请Ai-M61-32S-kit的同学看过来!
2024-04-29
开发板申请 | Ai-M61-32S高性能开发板来啦,共赠送200个!-活动
2024-04-18
我也领到官方免费送的AiPi-Eyes-S1开发板啦!!!
2023-09-26
【轻松上手】小安派跑个超级玛丽
2023-09-27
热门排行
1
【板子申请流程】新进来的同学请看这里-活
2
安信可社区一周年狂欢派对&抽奖盖楼活动开
3
我也领到官方免费送的AiPi-Eyes-S1开发板啦
4
【中奖公告】申请Ai-M61-32S-kit的同学看过
5
优质文章有赏!现金红包+开发板无限送,冲
6
【官方公告】关于板子申请发帖争议解释
7
开发板申请 | Ai-M61-32S高性能开发板来啦
8
【轻松上手】小安派跑个超级玛丽
9
【教程】社区发帖教程指引(尤其是图片上传
10
【电子DIY作品】+人体存在感应器+WB2+RD03