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