控制灯光的同时,在1602上显示温度所出现的效率问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2430|回复: 2

[已解决] 控制灯光的同时,在1602上显示温度所出现的效率问题

[复制链接]
发表于 2020-12-2 08:53 | 显示全部楼层 |阅读模式
本帖最后由 非常接近左岸 于 2020-12-2 21:48 编辑

【小白问题】
一个板子,通过红外开关和电位器实现LED的调光
同时用16B20获取温度并显示在I2C上的1602显示屏

问题在于loop中LED是不断循环判断的,而温度显示的刷新频率不需要那么高
我现在把温度显示直接挂在灯光判断的后面,发现整个就变得不很灵敏了

请教这种两个动作,时间频率不同的解决思路是怎样的呢?

if ((val==1) && (old_val==0))
{
    swi=1-swi;
  }

old_val=val;


if (swi==0)
{
analogWrite(LED,minlight);
}
else
{   
    analogWrite(LED,turbolight);
}

/*读取并显示温度
    sensors.requestTemperatures(); // Send the command to get temperatures
    lcd.setCursor(0, 1);
    lcd.print("TemC: "); //print "Tem: " on lcd1602
    lcd.print(sensors.getTempCByIndex(0));//print the temperature on lcd1602
    lcd.print(char(223));//print the unit" ℃ "
    lcd.print("C");
*/
}


发表于 2020-12-2 10:52 | 显示全部楼层
本帖最后由 rightliao 于 2020-12-2 10:54 编辑

加个count,让灯光判断跑几次(例如 100次)之后再显示一次温度


int cnt;
void setup()
{
  cnt=0
}
void loop() {
..
..
..
cnt=cnt+1;
    if(cnt > 100)
    {
       cnt = 0
       //读取并显示温度
      sensors.requestTemperatures(); // Send the command to get temperatures
      lcd.setCursor(0, 1);
      lcd.print("TemC: "); //print "Tem: " on lcd1602
      lcd.print(sensors.getTempCByIndex(0));//print the temperature on lcd1602
      lcd.print(char(223));//print the unit" ℃ "
      lcd.print("C");
     
    }}

 楼主| 发表于 2020-12-2 11:26 | 显示全部楼层
rightliao 发表于 2020-12-2 10:52
加个count,让灯光判断跑几次(例如 100次)之后再显示一次温度

好主意,谢谢!
简单好用,我咋就想不到呢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-29 18:24 , Processed in 0.143801 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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