亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

远离延迟

组件和用品

Arduino UNO
× 1
5 毫米 LED:红色
× 2

关于这个项目

该视频的灵感来自我在网上提出的问题。关于如何以不同的速率闪烁 2 个 LED。

如果我们想每 1000 毫秒闪烁一个 LED,每 500 毫秒闪烁第二个,我们仍然可以使用延迟,就像这样,正如您所看到的,我将第一个 LED 的 1000 毫秒延迟拆分为第二个 LED 的 500 毫秒闪烁。

byte LED2 =12;无效设置(){ pinMode(LED_BUILTIN,输出); pinMode(LED2, OUTPUT);}void loop() { digitalWrite(LED_BUILTIN, HIGH);数字写入(LED2,高);延迟(500);数字写入(LED2,低);延迟(500);数字写入(LED_BUILTIN,低);数字写入(LED2,高);延迟(500);数字写入(LED2,低);延迟(500); } 

但是如果我们想在 300 毫秒而不是 500 毫秒内更快地眨眼会发生什么。这就是延迟的使用使它变得非常复杂甚至不可能的地方。

那么该怎么办?停止使用延迟!

我们甚至在 Arduino IDE 中为它提供了一个示例,其名为blinkwithoutdelay。

我将第一个 LED 的逻辑复制到第二个 LED 并设置所需的延迟。

所以也尝试一下,远离延迟。我会说一个结局,我分享的代码远非完美,我想改变它但是,因为这个视频是针对那些刚接触arduino的人,我投了反对票。

代码

  • 示例代码
示例代码 Arduino
const int ledPin =LED_BUILTIN;int ledState =LOW; unsigned long previousMillis =0; const 长间隔 =1000; const int ledPin2 =12;int ledState2 =低; unsigned long previousMillis2 =0; const long interval2 =300;无效设置(){ pinMode(ledPin,输出); pinMode(ledPin2, OUTPUT);}void loop() { unsigned long currentMillis =millis(); if (currentMillis - previousMillis>=间隔) { previousMillis =currentMillis;如果(ledState ==LOW){ ledState =HIGH; } else { ledState =LOW;数字写入(ledPin,ledState); } //结束 if (currentMillis - previousMillis2>=interval2) { previousMillis2 =currentMillis;如果(ledState2 ==LOW){ ledState2 =HIGH; } else { ledState2 =低; } digitalWrite(ledPin2, ledState2); } //如果结束 }

示意图


制造工艺

  1. 如何保护铝免受腐蚀
  2. 从头开始学习云计算
  3. 从 C 过渡到 C++ 的 3 个理由
  4. 从网络获取湿度/温度
  5. IoT 101 项目:来自 Raspberry Pi 的流温度
  6. 使用 InitialState
  7. 由 ANDROID 智能手机控制的 RASPBERRY PI WIFI 机器人
  8. Verilog 延迟控制
  9. 锯切概念起源于哪里?
  10. 灰色演员阵容有什么期待?
  11. 对软饮料自动售货机有何期待?
  12. 对蔬菜自动售货机有何期待?