新人求教,帮我看看这个程序-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3771|回复: 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()
}

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

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

[pre]#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();
  */
}[/pre]
发表于 2021-4-23 07:21 | 显示全部楼层
你只是延遲了 10 秒再顯示一次 wd 的值,
在沒有更新該值的情況下,就是給你一樣的值,
直到下次 loop() 重頭開始取得新值才會更新吧
 楼主| 发表于 2021-4-25 22:45 | 显示全部楼层
shouzama 发表于 2021-4-23 07:21
你只是延遲了 10 秒再顯示一次 wd 的值,
在沒有更新該值的情況下,就是給你一樣的值,
直到下次 loop() 重頭 ...

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

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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 07:36 , Processed in 0.081763 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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