![]() |
1
4
Arduino人工世界之外的真正嵌入式系统几乎从不使用繁忙延迟/繁忙等待循环作为控制时序的手段。这种繁忙的等待是非常有问题的,因为它们毫无理由地拖延程序执行并导致100%的CPU利用率和100%的电流消耗。 在专业环境中使用的替代方案涉及硬件计时器。专用定时器硬件外围设备,或专用实时时钟硬件外围设备。这些可以通过轮询标志或通过中断来使用。 特别是为了控制LED,定时器外设的“输出比较”功能可用于在定时器用完时自动激活/停用GPIO引脚。PWM特性也是非常常见的,特别是用于减少电流消耗或在RGB的情况下启用多种颜色。 在任何一种情况下,这些各种硬件特征中的任何一个都允许在主程序侧以并行方式控制LED。 |
![]() |
2
1
无论您使用的是忙for循环还是忙等待
立即闪烁研究: https://docs.arduino.cc/built-in-examples/digital/BlinkWithoutDelay 有关更高级的协作多任务处理技术,请参阅我的答案: How to do high-resolution, timestamp-based, non-blocking, single-threaded cooperative multi-tasking 对于读取RC PWM控制信号,这很复杂,但我这里有一个老例子: https://github.com/ElectricRCAircraftGuy/PWM_Reader2_WORKS_PERFECTLY_Hayden_car_lights 。 Here's the core code 。它以与油门设置成比例的速率使LED闪烁。
|
![]() |
Vishesh Chanana · “上载草图时出错”Arduino 7 年前 |
![]() |
abhit pahwa · 使用arduino的PID线路跟随 7 年前 |
![]() |
mooder · Arduino Python 3读取串行端口 7 年前 |
![]() |
Luke · Arduino按钮不在连续序列“1”上 8 年前 |