找回密码
 立即注册

QQ登录

只需一步,快速开始

点击进入授权页面

只需一步,快速开始

  • QQ空间
  • 回复
  • 收藏

参加活动: 0

组织活动: 0

该用户从未签到

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, 下载次数: 2

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 下一条