查看: 493|回复: 2

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

[复制链接]

该用户从未签到

发表于 2021-5-12 13:41 | 显示全部楼层 |阅读模式
rt 请大神们帮忙解答下,我现在按下遥控器的按键1之后LED进行闪烁,是使用高低电平交替循环的方式实现的,这个已经做到。现在想做的功能是再闪烁期间,只要按下按键2就可以随时停止,问题是在闪烁期间收不到按键2的信号,一定要等循环结束之后才触发按键信号。这个如何解决呢?就是如何再一个按键触发的时间中,另一个按键可以触发中断函数呢?谢谢大家了

签到天数: 114 天

[LV.6]常住居民II

发表于 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);
}
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

esp32s2 在Arduino IDE调试USB CDC
esp32s2 在Arduino IDE调
各位大佬好,最近尝试弄清如何使用esp32s2的usb功能。然后在Github上找的代码,放到自
一直想做个飞行器,但是出了电小问题
一直想做个飞行器,但是出
这是主函数的源码 extern uint8_t PWM_PIN[8]; void initOutput();//初始化函数 void
Arduino mega2560 usb串口01被modbus master库占用,无法下载程序
Arduino mega2560 usb串口
Arduino mega2560 用来测试modbus master通信,因未发现串口可选择,直接下载了串口(
DIY炫彩灯带,竟如此简单,更有硬件开发工具免费领!
DIY炫彩灯带,竟如此简单
什么是涂鸦Arduino SDK? Arduino 是全球最流行的开源硬件平台,涂鸦官方推出的 Ardui
.h .cpp源代码转.ino草图
.h .cpp源代码转.ino草图
在Github上下载了源码,是.h 和.cpp文件,请问一下,如何才可以转成可以在arduinoIDE
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表