好的,我刚刚钻进了一个Arduino的编程,目前我有一个基本的闪烁功能以及一个RGB LED程序,可以将LED变为蓝色,绿色和红色。我有2个LED是一个简单和基本的黄色LED,应该可以作为“工作状态”的指示器。还有一个LED是RGB。虽然我想让黄色指示灯不断闪烁,但现在我希望RGB通常可以通过它的颜色进行转换。 如何让我的代码能够同时运行两个进程?C++ Arduino,一次运行两个循环?
0
A
回答
2
喜欢的东西:
int timekeeper=0;
while (1)
{
do_fade(timekeeper);
if (timekeeper%100==0) {
do_blink_off();
}
if (timekeeper%100==50) {
do_blink_on();
}
delay(10);
timekeeper++;
}
这是从内存中完成,所以你的里程可能会有所不同。 我已经将计时器传递给了do_fade(),因此您可以计算出淡入淡出的程度。 do_fade()会更新淡入淡出,然后立即返回。 do_blink_on()和do_blink_off()会类似 - 改变你需要改变的东西,然后返回。在这个例子中,do_fade()将每10毫秒调用一次,do_blink_off()每秒一次,do_blink_on()每秒一秒后调整一次(so on,1/2 second,off,1/2 second,on,1/2秒...)
1
AMADANON的答案会起作用,但请记住,执行多个任务的首选方式是使用定时器中断。例如,如果您希望代码在淡入淡出后执行其他操作,则其他函数的计时会干扰LED闪烁。为了解决这个问题,你可以使用内置于Arduino中的定时器。
在后台,一个计时器正在计数,当它达到某个值时,它会重置计数器并触发中断服务程序,这是您打开/关闭LED的位置。
以下是有关使用计时器闪烁的LED教程中断: http://www.engblaze.com/microcontroller-tutorial-avr-and-arduino-timer-interrupts/
相关问题
- 1. Arduino循环一次
- 2. for循环在C中运行两次
- 3. 循环仅运行两次
- 4. Do-while循环运行两次时应该只运行一次(C++)
- 5. while循环运行一次?
- 6. 循环只运行一次
- 7. foreach循环运行一次
- 8. for循环Arduino/C
- 9. 同时为一个游戏运行两个循环 - C
- 10. PHP - Loop内部循环第二个循环只运行一次
- 11. PHP while while循环,第二个循环只运行一次
- 12. C++:istringstream循环两次
- 13. Arduino IDE:在循环内打印一次
- 14. INSERT INTO调用一次,但运行两次(不是在一个循环中)
- 15. Java循环只运行一次
- 16. Foreach循环只运行一次
- 17. Arduino AttachInterrupt()似乎运行两次
- 18. 运行一个循环,然后重置并再次运行它
- 19. 并行运行两个循环
- 20. 运行两个无限并行循环
- 21. 第一次循环后Arduino HTTP请求循环失败
- 22. Foreach循环循环两次
- 23. Foreach循环运行N次
- 24. 如何同时运行两个循环?
- 25. Tensorflow while while循环只运行一次
- 26. For循环运行只有一次
- 27. 每秒运行一次循环sleep_for
- 28. Mysql游标循环只运行一次
- 29. For循环运行一次更多
- 30. For循环只运行一次
看起来不错。我唯一需要补充的是,如果您的时间安排不相关,您不受限于使用单个计数器 - 您可以独立管理多个计数。如果你在50点闪烁,你也不需要进行模数,当你闪烁时,你也不需要模数。 – paddy
如果我要有独立的时钟,我会在每个函数中创建静态(并将do_blink_on/off合并为一个)。我确实认为这是一个答案,但我认为这可能会太过先进,因为谁需要问上述问题。 –