查看: 1756|回复: 33

[已解决] 萌新求助 delay()的延时会把时间缩小一百倍

[复制链接]
  • TA的每日心情
    奋斗
    2020-7-15 19:38
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2019-10-24 08:49 | 显示全部楼层 |阅读模式
    本帖最后由 FSSFS二号机 于 2020-7-9 18:41 编辑

    在写流水灯的时候发现的,一开始是delay(1000)结果发现灯根本闪都不闪,放大到10000后发现差不多是0.1秒的频率在闪,再变成delay(100000)把原来的一秒放大一百倍之后才终于是一秒闪一次了。
    一开始以为是我那块陈年盗版老板子的问题,就没在意(能用就行了),后来又换了一块也是一摸一样的问题。
    ide就是官网下的,难不成编译器出错了???
    求求dalao们解答,谢谢了
  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2019-10-25 02:09 | 显示全部楼层
    在 arduino 安装目录下找这个文件:
    arduino-x.x.x\hardware\arduino\avr\boards.txt

    在这个文件里查找你的板子(例如UNO)的编译速率,例如:
    uno.build.f_cpu=16000000L直接搜 .build.f_cpu 关键词就行;

    如果你确认延时都快了 100 倍,目测是编译速率被你删掉了两个零。
    鉴于此可以查找“160000”关键词,当然要勾选全字匹配,不然和没删掉零的都混一起了。
    能用正则表达式更好:“160000[^0]”

    --------------------------------------------------------------------------------------------------

    目测是某次作孽,手欠把库文件改了(可以看看最后修改时间),然后就神奇了。
    想起了程序员从入门到删库的说法


  • TA的每日心情
    奋斗
    2020-1-13 09:17
  • 签到天数: 176 天

    [LV.7]常住居民III

    发表于 2019-10-24 09:05 | 显示全部楼层
    你还不如把程序贴出来
  • TA的每日心情
    奋斗
    2020-7-15 19:38
  • 签到天数: 9 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-10-24 09:25 | 显示全部楼层
    换blink试也一样
  • TA的每日心情
    奋斗
    2020-7-15 19:38
  • 签到天数: 9 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-10-24 09:26 | 显示全部楼层
    秋缘 发表于 2019-10-24 09:05
    你还不如把程序贴出来

    void setup() {
      // put your setup code here, to run once:
    for(int i=8;i<=11;i++)
    pinMode(i,OUTPUT);
    }

    void loop() {
      // put your main code here, to run repeatedly:
    digitalWrite(11,LOW);
    digitalWrite(8,HIGH);
    delay(20000);
    digitalWrite(9,HIGH);
    delay(20000);
    digitalWrite(8,LOW);
    digitalWrite(10,HIGH);
    delay(20000);
    digitalWrite(9,LOW);
    digitalWrite(11,HIGH);
    delay(20000);
    digitalWrite(10,LOW);
    delay(20000);
    }
  • TA的每日心情
    奋斗
    2020-7-15 19:38
  • 签到天数: 9 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-10-24 09:28 | 显示全部楼层
    FSSFS二号机 发表于 2019-10-24 09:26
    void setup() {
      // put your setup code here, to run once:
    for(int i=8;i

    就是极其简单普通的代码啊。。。像这样delay(20000)表现出来的效果也是闪烁中持续0.2秒的亮
  • TA的每日心情
    开心
    2020-8-13 09:09
  • 签到天数: 647 天

    [LV.9]以坛为家II

    发表于 2019-10-24 12:10 | 显示全部楼层
    我试了你的程序delay()没有错,每个灯亮的时间为40秒.
  • TA的每日心情
    奋斗
    2020-7-15 19:38
  • 签到天数: 9 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-10-24 23:30 | 显示全部楼层
    lwq1947 发表于 2019-10-24 12:10
    我试了你的程序delay()没有错,每个灯亮的时间为40秒.

    那就是我的电脑环境或者编译器的问题了得再查查看了
  • TA的每日心情
    奋斗
    2020-7-15 19:38
  • 签到天数: 9 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-10-31 17:25 | 显示全部楼层
    t3486784401 发表于 2019-10-25 02:09
    在 arduino 安装目录下找这个文件:
    arduino-x.x.x\hardware\arduino\avr\boards.txt

    等回家试试看看。
    说实话库文件那一块我就动过avr\pgmspace.h里的inttypes.h的导航,也不知道新买电脑的新版win10又有什么问题从微软商城到安装包安装的再到旧电脑上直接拷来的1.8.1都会在编译的时候找不到上一级文件夹里的inttypes.h,当时最后还是把inttypes.h放到pgmspace.h同一个文件夹里再把调用路径从#<inttypes.h>改成#<avr\inttypes.h>才行。
    除此之外我就一下都没作过死了。根本不敢动
    所以说这个编译速度跟延时的关系是什么啊?编译速率不是应该是编译时的速度么,这也可以设定?
  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2019-10-31 18:05 | 显示全部楼层
    FSSFS二号机 发表于 2019-10-31 17:25
    等回家试试看看。
    说实话库文件那一块我就动过avr\pgmspace.h里的inttypes.h的导航,也不知道新买电脑的 ...

    你把编译过程的详细信息打开,编译以后找 FCPU 这个项就可以看到编译时的速率了。

    延时当然和编译速率有关,因为要通过你的目标时间(xx ms)、编译速度(yy MHz)换算成机器周期数。
    编译速度每少一个零,换算出的机器周期数就少到 1/10,在正确的电路板上运行就快 10 倍
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    Bliker 技术QQ群301438087,让我这个客户感到极度失望!!
    Bliker 技术QQ群301438087
    Bliker 技术用户交流QQ群301438087,让我这个客户感到极度失望!! 我用了一小段时间
    如何用小爱同学控制网红仿AWTRIX2.0
    如何用小爱同学控制网红仿
    如标题所见,本期将讲述如何用小爱同学控制仿AWTRIX2.0。 视频演示: http://www.b
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表