完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我是 NodeMCU 和 LUA 的新手,之前对 Arduino 做过很多修改。 我的小介绍项目是收集环境信息并将其存储在数据库中以供分析。我使用 DHT 传感器成功运行了这个。 我现在想扩展它以使用防水 DS18b20 温度探头。使用内置的 C 库,我能够从探头读取温度,但我正在努力解决如何将值传回我的应用程序的其余部分的问题。 本质上,我想定义一个函数“read_DS18B20_Temp”,我将传感器连接到的引脚号传递给该函数,它将返回温度。我用 DHT 传感器做了一些事情,它工作正常。 这是我目前的尝试: 代码:全选function read_DS18B20_Temp(ds18B20_pin) local T -- Setup Sensor ds18b20.setup(ds18B20_pin) local function readout(INDEX, ROM, RES, TEMP, TEMP_DEC, PAR) print(TEMP) return TEMP end -- Read Sensor T = ds18b20.read(readout,{}) --Return temp print(T) return T end 如果我从我的主应用程序调用此函数,如“DS_T1 = read_DS18B20_Temp(2)”,则 DS_T1 始终为“nil”。监控终端,我注意到温度的打印有些延迟,并在 read_DS18B20_Temp() 执行完成后显示在终端上。我可以这么说,因为我看到在温度之前打印了“nil”。我认为这个“nil”来自“print(T)”命令。 我试过在 readout() 函数中设置 T=TEMP 但它做同样的事情。 我明白传感器读取和返回值的速度很慢,我不介意,但我希望我的 read_DS18B20_Temp() 函数等待传感器读取完成并将温度值返回到我的主应用程序。 如果我使用全局变量并在读出函数中写入它,它会在打印命令启动的同时设置。这不太可行,因为我希望能够在不同的引脚上安装多个传感器,调用 read_DS18B20_Temp(pin) 并从返回的传感器中获取读数。 看来这一定是可能的,但由于缺乏经验,我遇到了一些障碍。 有人可以告诉我哪里出错了,或者我是否正在尝试做一些 ds18b20 库的工作方式无法做到的事情。 谢谢。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
118个成员聚集在这个小组
加入小组423浏览 6评论
357浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
336浏览 5评论
338浏览 4评论
319浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-28 16:31 , Processed in 0.633434 second(s), Total 44, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号