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

Arduino 不用 delay() 让两个 LED 以不同频率闪烁

所需元件

项目简介

很多初学者想让两个 LED 以不同频率闪烁,第一反应是用 delay()。但 delay() 会阻塞整个程序,一旦频率不成整数倍(如 1000 ms 和 300 ms),就极难甚至无法实现。

解决办法是放弃 delay(),改用 millis() 非阻塞计时。Arduino IDE 自带的 BlinkWithoutDelay 示例演示了单个 LED 的做法,我们只需复制这套逻辑,给第二个 LED 设置独立的时间变量和间隔即可。

核心代码

const int ledPin  = LED_BUILTIN; // 内置 LED
const int ledPin2 = 12;          // 外接 LED

int ledState  = LOW;
int ledState2 = LOW;

unsigned long previousMillis  = 0;
unsigned long previousMillis2 = 0;

const long interval  = 1000; // 1 秒
const long interval2 = 300;  // 300 毫秒

void setup() {
  pinMode(ledPin,  OUTPUT);
  pinMode(ledPin2, OUTPUT);
}

void loop() {
  unsigned long currentMillis = millis();

  // LED 1:1 秒翻转一次
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    ledState = (ledState == LOW) ? HIGH : LOW;
    digitalWrite(ledPin, ledState);
  }

  // LED 2:300 毫秒翻转一次
  if (currentMillis - previousMillis2 >= interval2) {
    previousMillis2 = currentMillis;
    ledState2 = (ledState2 == LOW) ? HIGH : LOW;
    digitalWrite(ledPin2, ledState2);
  }
}

接线图

内置 LED 无需接线。外接 LED 长脚接 D12,短脚串联 220 Ω 电阻后接 GND。

要点总结

制造工艺

  1. 树莓派4搭建Web实时温湿度监测系统
  2. IoT 入门教程:树莓派流式传输温度数据
  3. 树莓派 ppDAQC 扩展板实时采集温度数据并上传至 InitialState
  4. 树莓派WiFi机器人:手机App远程控制实战
  5. 锯切概念起源:从远古工具到现代机床的演进
  6. 灰铸铁深度解析:性能特性、生产工艺与汽车应用
  7. 软饮料自动售货机完全指南:原理、优势与常见问题
  8. 蔬菜自动售货机深度解析:核心特性与商业价值
  9. 保护铝材防腐蚀:持久耐用的专家策略
  10. 为何从C转向C++能提升嵌入式开发
  11. 零基础入门云计算:新手实战指南
  12. 理解Verilog延时控制:时序技术与最佳实践