5970浏览
查看: 5970|回复: 1

[进阶] arduino宏的应用实例5--用宏实现时间继电器(转)

[复制链接]
直接上代码:
  1. //宏名:delayRelay。返回值:bool 到达时间。输入值:enable使能,del延时时间。作用:延时继电器,当enable使能后,延时del毫秒后接通。
  2. //static unsigned long tim = ({Serial.println("start"), millis();}); //这句用于测试是否能在static 变量设置的时候加入只执行一次的初始化代码块。
  3. #define delayRelay(enable,del) ({\
  4.     static unsigned long tim = millis();\
  5.     if (!enable) {\
  6.       tim = millis();\
  7.     }\
  8.     millis() - tim >= del;\
  9.   })
  10. void setup() {
  11.   // put your setup code here, to run once:
  12.   Serial.begin(9600);
  13.   pinMode(7, INPUT);            //pin7接led
  14.   pinMode(8, INPUT_PULLUP);     //pin8接按键
  15. }
  16. void loop() {
  17.   // put your main code here, to run repeatedly:
  18.   //当8口的按键按下后,延时1000ms接通led,中途断开则下次重新计时。
  19.   if (delayRelay(!digitalRead(8), 1000))
  20.   {
  21.     pinMode(7, OUTPUT);
  22.   } else {
  23.     pinMode(7, INPUT);
  24.   }
  25. }
复制代码
代码作用,实现plc中常见的时间继电器功能。
按键保持按下1s后led点亮。

dsweiliang  初级技神

发表于 2016-5-4 09:36:07

学习啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail