极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 迷你强

Arduino入门教程--第十课--用Arduino做简单温度计

  [复制链接]
发表于 2014-10-10 16:15:39 | 显示全部楼层
这个用起来确实简单多了,程序几行就搞定了,18b20相对就复杂许多了。
回复 支持 反对

使用道具 举报

发表于 2014-10-10 21:10:14 | 显示全部楼层
好东西,相当基础,适合初学者,顶!!!!
回复 支持 反对

使用道具 举报

发表于 2014-10-30 22:01:52 | 显示全部楼层
void setup()
{
Serial.begin(9600);

}
void loop ()
{
int n=analogRead(A0);
float vol=n*(5.0/1023.0*100);
Serial.println (vol);
delay(2000);
}
为什么我的测出来感觉数据是随机的······最先以为把线连反了,但是一次是400至500,反过来就是20左右(现在温度绝对没20度!!),还出现很多0.00或者个位数,感觉是乱码,求解
回复 支持 1 反对 0

使用道具 举报

发表于 2014-11-25 17:16:52 | 显示全部楼层
我的一直是500   
回复 支持 反对

使用道具 举报

发表于 2014-11-26 10:28:27 | 显示全部楼层
现在正需要这个简单的温度计
回复 支持 反对

使用道具 举报

发表于 2014-11-27 23:09:23 | 显示全部楼层
Alierce 发表于 2014-6-25 17:00
为什么 float vol = n*(5.0/1023.0*100); 当中5要写为5.0?1023要写为1023.0?我试过如果把0去掉就只能显示 ...

查了下,arduino官方对float的解释是If doing math with floats, you need to add a decimal point, otherwise it will be treated as an int. See the Floating point constants page for details.
如果用float运算,需要把所有的数都改成浮点进行运算,不然就会被当成int运算。如果你把1023.0的0去掉了,就是两个int运算。n*5/1023的值是个小于1的小数,arduino会直接把它当成0处理,所以结果现实的也就是0了。
和C语言的规则不太一样。
回复 支持 反对

使用道具 举报

发表于 2014-11-27 23:14:53 | 显示全部楼层
ardiunoaihaozhe 发表于 2014-7-18 13:24
请问能不能显示千分位

把Serial.println(vol)的函数改成Serial.println(vol,3)就能显示千分位了。
但感觉没有意义啊,这个传感器的参数表里写了,精度是0.5℃,显示得再精细,实际也不准确啊。。。
回复 支持 1 反对 0

使用道具 举报

发表于 2014-12-21 21:27:47 | 显示全部楼层
我收到的是aosong的DHT11,测量范围是0-50度,但是 2号引脚输出的一直都是1023, 所以就会一直是最大的数,大多数出现500的估计都是这个问题
求解
回复 支持 反对

使用道具 举报

发表于 2014-12-21 21:40:35 | 显示全部楼层
DHT11 貌似数字输出 这个例子没法玩
回复 支持 反对

使用道具 举报

发表于 2014-12-21 21:44:35 | 显示全部楼层
lionelg 发表于 2012-6-27 16:21
范例用热敏电阻是不是更简单点儿

差不多,热门电阻编程中要有公式转换,lm35直接通过AD转换输出
回复 支持 反对

使用道具 举报

发表于 2015-1-26 13:56:25 | 显示全部楼层
fish6823 发表于 2014-2-17 23:49
因为模拟口输出的数值是0-1023,板子的基准电压是5V,所以5/1023*1000就可以算出模拟口的数值1=4.88759mV ...

你好   那如果按照你这样算  n=1023时   vol=500℃了   可是明明应该是100℃啊
回复 支持 反对

使用道具 举报

发表于 2015-1-27 18:22:53 | 显示全部楼层
qq7221742 发表于 2015-1-26 13:56
你好   那如果按照你这样算  n=1023时   vol=500℃了   可是明明应该是100℃啊

您忘记要除以5了,所以1023对应的是100℃。
回复 支持 反对

使用道具 举报

发表于 2015-2-2 12:10:42 | 显示全部楼层
fish6823 发表于 2015-1-27 18:22
您忘记要除以5了,所以1023对应的是100℃。

所以完整公式就是:vol=n*5.0/1023.0*1000/10   可是您给的公式中n=1023,vol就=500啊   
后来我的理解是n无法达到1023   最高值是使vol=100的值    不知道这样理解对不对
回复 支持 反对

使用道具 举报

发表于 2015-2-2 17:22:23 | 显示全部楼层
qq7221742 发表于 2015-2-2 12:10
所以完整公式就是:vol=n*5.0/1023.0*1000/10   可是您给的公式中n=1023,vol就=500啊   
后来我的理解是 ...

哦确实应该是,因为每10mV为1度的话,1000mV也就是1V就到100度了。
回复 支持 反对

使用道具 举报

发表于 2015-3-29 14:43:11 | 显示全部楼层
这个仿真用的什么软件??、
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-29 03:39 , Processed in 0.054779 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表