用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

点击进入授权页面

只需一步,快速开始

  • QQ空间
  • 回复
  • 收藏
  • TA的每日心情
    开心
    2018-5-11 09:50
  • 签到天数: 1 天

    [LV.1]初来乍到

    wxj5368 新手上路 2017-9-13 21:16 楼主
    本个是arduino初学者,现遇到一个问题,急需高手帮忙解决,谢谢!
    本人想要实现的功能:
        上电运行UNO之后,程序运行“开机显示”,之后能自动进入“按键模式1”的功能(相当于自动按下了按键1),之后再人工按下任意其它按键都能顺利进行功能切换
    本人急需解决的问题:
        1.把程序编译写入UNO之后,发现程序运行完“开机显示”之后,就不往下走了,一定要人工按下按键才进入对应的功能,我想应该是while(1)的作用,能否让程序运行完“开机显示”之后,自动进入“按键模式1”的功能(相当于自动按下了按键1),然后再人工按任意其它按键都能顺利切换功能,如何解决?
    ,   2.人工按下其中任意一个按键后,对应的LED就闪亮,但发现存在这样的问题:在功能中加入延时函数delay()之后,LED能闪亮了,按键响应却不正常了(不灵敏),能否做到按键能正常响应切换,且LED又能闪亮,程序的问题在哪?如何解决?

    请高手帮忙,最好能把我的程序修改后打包发回来(我的程序在附件里KEY1-2),谢谢!

    KEY1-2.rar

    1.6 KB, 下载次数: 3

    1.你可以用一个变量取得 millis() 的时间,然后不断比较是否超时,从而达到“等待一会之后就向下执行的效果”
    2.LED 闪烁的效果你可以看看用时间中断之类的来实现

    慢慢调试吧,祝好运
    打赏作者鼓励一下!
    实在不行找我,有偿支援
    1:不管你在setup或loop里while(1)都是出不去循环的,除非break,你描述的功能可以在setup里面先显示“开机显示”,然后delay500,然后digitalWrite(你的按键1,HIGH),这样应该可以。
    2:程序是单线程的,你delay(5000),程序就在这里阻塞5秒,这个时候程序停止在当前这一句代码,loop()就无法完成循环,你的其他代码如:digitalRead(按键3pin)是执行不到的,所以就会出现失去响应。解决此问题可以使用变量保存总时间毫秒,millis()函数可以返回此值,用此变量不断的比对你设定的超时时间完成延时功能。
    vidamcmillan 发表于 2017-9-14 01:50
    1:不管你在setup或loop里while(1)都是出不去循环的,除非break,你描述的功能可以在setup里面先显示“开机 ...

    谢谢,我得慢慢研究,现在的水平等于小学生水平,还要花多点时间
    vidamcmillan 发表于 2017-9-14 01:50
    1:不管你在setup或loop里while(1)都是出不去循环的,除非break,你描述的功能可以在setup里面先显示“开机 ...

    如果能帮我修改一下更好
    发新帖
    发表评论
    高级模式  
    您需要登录后才可以回帖 登录 | 立即注册  
    关闭

    推荐主题 上一条 /2 下一条