我有一个Arduino Uno和一个Arduino Nano通过XBee Series 1无线电成功通信。
光传感器连接到Arduino Uno,读取光线强度数据并将其上传到连接到PC的另一台XBee无线电。一个LED(在继电器后建模)附在Arduino Uno上。
我想在Arduino Nano上按下按钮时通过XBee无线激活此继电器,我想到了在Arduino中使用attachInterrupt()函数。这是因为void loop()中存在1s延迟,但是当我按下Arduino Nano上的按钮时,我希望瞬间激活继电器。
如果我要将数据从Arduino Nano上的XBee无线发送到我的Uno,我可以问一下attachInterrupt()函数是否有效吗?
谢谢! :)
答案 0 :(得分:0)
根据您的想法,我建议不要在中断功能中实现所有继电器操作。通常情况下,中断处理程序只管理必要的部分,这些部分可以在没有任何挂起操作的情否则,该操作将阻止以下中断处理。因此,您最好声明一个标志来检测按钮事件,并在循环操作中检查此标志以将数据发送到PC。
但是,由于竞争条件,这个标志会被错误地引用。如果您需要更一致的检测,那么您最好关注Task库中的一些示例。 我想您可能对ButtonInterrupt和MessageTask等示例感兴趣。