查看: 330|回复: 4

[未解决] 新人求教,帮我看看这个程序

[复制链接]

该用户从未签到

发表于 2021-4-22 16:25 | 显示全部楼层 |阅读模式
QQ图片20210422162016.png 我想实现如下功能,我的探头放在不断加热的水中,蓝字部分,探测第一次温度,然后过个10秒红字探测第二次温度,但是我发现这个代码出来的效果是,蓝字部分探到的温度跟红字探测到的温度是一模一样的,是不是这个代码写法有问题?如何才能实现一个void setup()里面多次读取温度啊? 真心求教,这个代码要怎么修改?
代码如下
#include<math.h>

const float INdianya=5;
const float Rs=10;//采样电阻为21.5千欧
const int B=3950;
const double T1=273.15+25;//常温
const double R1=10;//常温对应的阻值,注意单位是千欧


void setup() {
  Serial.begin(9600);
}

void loop() {
  
  //获得A1处的电压值
  double NTC=analogRead(1);
  double NTCdianya=(NTC/1023)*5;
  
  Serial.print("NTC电压:");
  Serial.println(NTCdianya);
  
  //通过分压比获得热敏电阻的阻值
  double Rt=((INdianya-NTCdianya)*Rs)/NTCdianya;
  Serial.print("NTC的K值:");
  Serial.println(Rt);

  //换算得到温度值
  double wd=(((T1*B)/(B+T1*log(Rt/R1)))-273.15);
   Serial.print("温度:");  
   Serial.print(wd);
   Serial.print("℃");
     Serial.println();
  //每3秒输出,更改此处修改频率
  delay(10000);
   Serial.print("温度:");  
   Serial.print(wd);
   Serial.print("℃");
     Serial.println()
}

签到天数: 86 天

[LV.6]常住居民II

发表于 2021-4-23 00:10 | 显示全部楼层
本帖最后由 topdog 于 2021-4-23 00:30 编辑

11402M948-2.jpg
热敏电阻的接口电路。每次热敏电阻检测到温度变化时,它都会反映在输出电压中。void setup() 里面是只能运行一次的程序,如果一定要改就用执行次数有限制的用for或者无限的就用while。红色和蓝色部分是在串口观察输出结果用的意义一样。

#include<math.h>

const float INdianya = 5;
const float Rs = 21.5; //采样电阻为21.5千欧
const int B = 3950;
const double T1 = 298.15; //常温T1=273.15+25以开尔文为单位的室温
const double R1 = 50; //常温对应的阻值,注意单位是千欧


void setup() {
  Serial.begin(9600);
}

void loop() {

  //获得A1处的电压值
  double NTC = analogRead(A0);
  double NTCdianya = (NTC / 1023) * 5;

  Serial.print("NTC电压:");
  Serial.println(NTCdianya);

  //通过分压比获得热敏电阻的阻值
  double Rt = ((INdianya - NTCdianya) * Rs) / NTCdianya;
  Serial.print("NTC的K值:");
  Serial.println(Rt);

  //换算得到温度值
  double wd = (((T1 * B) / (B + T1 * log(Rt / R1))) - 273.15);
  Serial.print("温度:");
  Serial.print(wd);
  Serial.print("℃");
  Serial.println();
  //每3秒输出,更改此处修改频率
  delay(3000);
  /*
  Serial.print("温度:");
  Serial.print(wd);
  Serial.print("℃");
  Serial.println();
  */
}

签到天数: 80 天

[LV.6]常住居民II

发表于 2021-4-23 07:21 | 显示全部楼层
你只是延遲了 10 秒再顯示一次 wd 的值,
在沒有更新該值的情況下,就是給你一樣的值,
直到下次 loop() 重頭開始取得新值才會更新吧

该用户从未签到

 楼主| 发表于 2021-4-25 22:45 | 显示全部楼层
shouzama 发表于 2021-4-23 07:21
你只是延遲了 10 秒再顯示一次 wd 的值,
在沒有更新該值的情況下,就是給你一樣的值,
直到下次 loop() 重頭 ...

怎么写才能再LOOP里面多次读取温度啊?

签到天数: 80 天

[LV.6]常住居民II

发表于 2021-4-26 00:15 | 显示全部楼层
plfs 发表于 2021-4-25 22:45
怎么写才能再LOOP里面多次读取温度啊?

看是要直接 loop() 重來,
還是複製一段讀取的程序貼上
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

arduino程序设计基础 blinker物联网解决方案

热门推荐

【分享】Blynk+M5timer_camera(esp32 core),易于实现部署的家居...
【分享】Blynk+M5timer_ca
Blynk+M5timer_camera(esp32 core),易于实现部署的家居监测【背景故事】本教程源
OLED 128*64自制可达10000000个选项的菜单(已更新)
OLED 128*64自制可达10000
OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
安卓app版本拒绝录音授权提示错误
安卓app版本拒绝录音授权
录音授权拒绝后,会显示 美车驿站,而不是点灯app的名称
如何用将esp8266(nodemcu 1.0)的串口监视内容显示到oled0.9(4pin)
如何用将esp8266(nodemcu
小白一个,前段时间一直想做一个检测WiFi设备的检测器,然后花了一下午的时间,搞出来
教你让OLED动起来!多重字符串版!
教你让OLED动起来!多重字
大家都知道:arduino单片机是单线程的 而上次教程中的多段字符串的运行速度必须一致
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表