求助 如何使用红外线遥控器对闪烁的灯进行中断-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3121|回复: 2

[未解决] 求助 如何使用红外线遥控器对闪烁的灯进行中断

[复制链接]
发表于 2021-5-12 13:41 | 显示全部楼层 |阅读模式
rt 请大神们帮忙解答下,我现在按下遥控器的按键1之后LED进行闪烁,是使用高低电平交替循环的方式实现的,这个已经做到。现在想做的功能是再闪烁期间,只要按下按键2就可以随时停止,问题是在闪烁期间收不到按键2的信号,一定要等循环结束之后才触发按键信号。这个如何解决呢?就是如何再一个按键触发的时间中,另一个按键可以触发中断函数呢?谢谢大家了
发表于 2021-5-12 23:12 | 显示全部楼层
不要用 delay() 延遲方式來閃爍(延遲時什麼都不能做),
改用 millis() 取得系統時間進行比對的方式來閃爍
(延遲時可以執行其他指令,例如讀取紅外線)

網上找找跟 millis() 使用相關的範例
发表于 2021-5-19 10:12 | 显示全部楼层
这个和我之前做的一个红外遥控控舵机的实验很类似。按下红外遥控某个按键,舵机实现循环摇头,然后再按下另外一个按键舵机马上停止。
我给你我当时做这个实验的大概思路:
//我用的是变量来储存红外遥控按下状态
int i;//定义一个变量来存储红外遥控按下按键的状态
void setup()
{

}

voidloop()
{
if(irrecv.decode(&results))
{
if(results.value == 0xFF9867)//如果按下“-”按键
{
i=1;
}
if(results.value == 0xFF02FD)//如果按下“+”按键
{
i=2;
}
irrecv.resume();
}
if(i ==1)//当判断i=1时,led闪烁
{
digitalWrite(3,1);
delay(100);
digitalWrite(3,0);
delay(100);
}
if(i ==2)//当判断i=2时,led停止闪烁
{
digitalWrite(3,0);
}
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-29 05:44 , Processed in 0.075832 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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