极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: code-AR

[新人帖]超声波模块+1602信息输出

[复制链接]
发表于 2013-10-19 01:47:13 | 显示全部楼层
这个程序测远距离就有点问题,我测了一下天花板不行,貌似最远就两米54,看了一下其他的程序可以测到三米
回复 支持 反对

使用道具 举报

发表于 2013-12-2 21:43:14 | 显示全部楼层
请问LZ

if(millis() > timer +500)
  {
    lcd.print("Distancce:");
    lcd.setCursor(6,1);
    lcd.print(cm);
    lcd.print("cm  ");
    lcd.home();
    timer=millis()+500;
  }

这里的意思是不是当millis() > timer +500)的时候开始执行下面程序。
当 timer=millis()+500;的时候停止以上程序??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-3 20:47:14 | 显示全部楼层
van_wilder 发表于 2013-12-2 21:43
请问LZ

if(millis() > timer +500)

这个代码是表示每一秒更新距离数据。millis() > timer +500,这个是时间判断。
回复 支持 反对

使用道具 举报

发表于 2014-2-17 19:48:58 | 显示全部楼层
code-AR 发表于 2013-12-3 20:47
这个代码是表示每一秒更新距离数据。millis() > timer +500,这个是时间判断。

楼主,你的代码不大对吧,看红字


  int timer=-500;
  cm = pulseIn(EchoPin, HIGH) / 58.0;
  cm = (int(cm * 100.0)) / 100.0;
  delay(500);

  if(millis() > timer +500)
  {
    lcd.print("Distancce:");
    lcd.setCursor(6,1);
    lcd.print(cm);
    lcd.print("cm  ");
    lcd.home();
    timer=millis()+500;
  }

你每次循环都设timer=-500,那么timer的值永远都不变的,后面那两个根本没用吧,而且你设的延时是500,为什么还要设后面这个时间判断呢?难道是想测两次显示一次吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-18 23:44:43 | 显示全部楼层
fish6823 发表于 2014-2-17 19:48
楼主,你的代码不大对吧,看红字

好像是有些问题。也是有些久了,没去研究了,谢谢提意见!
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 13:24 , Processed in 0.040907 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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