# Timer after rising edge

**URL:** <https://discourse.nodered.org/t/timer-after-rising-edge/15935>\
**Category:** General\
**Created:** [26 September 2019 09:09 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935 "2019-09-26T09:09:46Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nabil](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/nabil/32/42322_2.png) [@Nabil](https://discourse.nodered.org/u/Nabil)\
**Post date:** [26 September 2019 09:09 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/1 "2019-09-26T09:09:46Z")

</div>

Hi,  
I'm using Node-red to control arduino using Firmata!  
I have an input (PushButton) that it will change to "TRUE" many times,  
I want a simple node that will remember this value on the rising edge" during 3s and then wait for the next "TRUE"

![RisingEdgeTimer](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/d/de8a17b3affe607a8d9e89578de58c6fb8010a1f.jpeg)

"

 ![NodeRed](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/8/803efb5f3aa0dad641e818a21c0fa60959cfafda.png)

Many Thanks

```auto
[{"id":"cb1b3c7a.7d4548","type":"arduino in","z":"16a6f52b.8b44ab","name":"Push Button","pin":"30","state":"INPUT","arduino":"2e1473db.345ef4","x":130,"y":230,"wires":[["335f8a8b.0e1486"]]},{"id":"5eb8f23b.a93ffc","type":"arduino out","z":"16a6f52b.8b44ab","name":"LED","pin":"31","state":"","arduino":"2e1473db.345ef4","x":520,"y":230,"wires":[]},{"id":"335f8a8b.0e1486","type":"function","z":"16a6f52b.8b44ab","name":"Rising Edge timer","func":"\nreturn msg;","outputs":1,"noerr":0,"x":340,"y":230,"wires":[["5eb8f23b.a93ffc"]]},{"id":"2e1473db.345ef4","type":"arduino-board","z":"","device":"COM4"}]

```

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [26 September 2019 09:14 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/2 "2019-09-26T09:14:54Z")

</div>

The red triangle on the LED node indicates a problem with the configuration with that node.

---

<div class="post-metadata">

**Author:** ![ukmoose](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ukmoose/32/13_2.png) [@ukmoose](https://discourse.nodered.org/u/ukmoose)\
**Post date:** [26 September 2019 09:18 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/3 "2019-09-26T09:18:03Z")

</div>

There's also no content in the function node 🙂

---

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [26 September 2019 09:37 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/4 "2019-09-26T09:37:46Z")

</div>

A simple trigger node should do what you want

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/6/636c446df56f8a02f0f485bab586bd96801185cd.png)

---

<div class="post-metadata">

**Author:** ![Nabil](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/nabil/32/42322_2.png) [@Nabil](https://discourse.nodered.org/u/Nabil)\
**Post date:** [26 September 2019 09:51 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/5 "2019-09-26T09:51:15Z")

</div>

Corrected, Thank you!

---

<div class="post-metadata">

**Author:** ![Nabil](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/nabil/32/42322_2.png) [@Nabil](https://discourse.nodered.org/u/Nabil)\
**Post date:** [26 September 2019 09:58 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/6 "2019-09-26T09:58:53Z")

</div>

it's true, in deed It is my question.. I have no idea how to do so

normally I want something like this:

**if** (INPUT passes from 0 to1) **then** (OUTPUT=1) wait 3s and redo the same thing...

---

<div class="post-metadata">

**Author:** ![Nabil](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/nabil/32/42322_2.png) [@Nabil](https://discourse.nodered.org/u/Nabil)\
**Post date:** [26 September 2019 10:01 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/7 "2019-09-26T10:01:52Z")

</div>

I tried with the trigger but I saw that it triggered in both the rising and the falling edge ☹

---

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [26 September 2019 10:39 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/8 "2019-09-26T10:39:13Z")

</div>

To cure that - put a switch in front of it to only pass thru the rising edges

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/2/28e1fb944bbdf9f5eb36f33f11f8fd6bf74a2c4a.png)

---

<div class="post-metadata">

**Author:** ![Nabil](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/nabil/32/42322_2.png) [@Nabil](https://discourse.nodered.org/u/Nabil)\
**Post date:** [26 September 2019 10:44 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/9 "2019-09-26T10:44:45Z")

</div>

using just a trigger I had this results

![jpg](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/5/597ad533482c9a6016f3bf905024a500cef54c19.jpeg)

Thnks, I'll try the switch and I'll back

---

<div class="post-metadata">

**Author:** ![meeki007](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/meeki007/32/12499_2.png) [@meeki007](https://discourse.nodered.org/u/meeki007)\
**Post date:** [26 September 2019 10:56 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/10 "2019-09-26T10:56:26Z")

</div>

You forgot to enable "extend delay if new message arrives"

```auto
[{"id":"11dc9f7b.c1e209","type":"inject","z":"adeab68c.067be8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":600,"y":600,"wires":[["908c32ce.d43ba"]]},{"id":"cc7c5ce1.485ef","type":"debug","z":"adeab68c.067be8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":890,"y":600,"wires":[]},{"id":"908c32ce.d43ba","type":"trigger","z":"adeab68c.067be8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"3","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":740,"y":600,"wires":[["cc7c5ce1.485ef"]]}]

```

 ![000two](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/d/dce879b790fa731186ef90c1c2fdbfc46d85d464.png)

---

<div class="post-metadata">

**Author:** ![meeki007](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/meeki007/32/12499_2.png) [@meeki007](https://discourse.nodered.org/u/meeki007)\
**Post date:** [26 September 2019 11:09 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/11 "2019-09-26T11:09:13Z")

</div>

The above solve this section

 ![section](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/a/a66f5227f9a88b5622e91296ad8ad8b7e2565973.png)

to solve it all it use a rate limiter

 ![rl](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/a/a34bfb712eb0fc3a9b8dacf2bc9346b70f381d89.png)

```auto
[{"id":"11dc9f7b.c1e209","type":"inject","z":"adeab68c.067be8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":600,"y":600,"wires":[["3b25ee70.1b299a"]]},{"id":"cc7c5ce1.485ef","type":"debug","z":"adeab68c.067be8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1110,"y":600,"wires":[]},{"id":"908c32ce.d43ba","type":"trigger","z":"adeab68c.067be8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"3","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":940,"y":600,"wires":[["cc7c5ce1.485ef"]]},{"id":"3b25ee70.1b299a","type":"delay","z":"adeab68c.067be8","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"3","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":780,"y":600,"wires":[["908c32ce.d43ba"]]}]

```

now if it just so happens that at exactly 3seconds it gets a new trigger you will get a 0 for a millisecond. Close enough.

---

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [26 September 2019 11:11 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/12 "2019-09-26T11:11:30Z")

</div>

> [@meeki007](#):
>
> You forgot to enable "extend delay if new message arrives"

The OP didn't want it extending if new pulse arrives 🙂

---

<div class="post-metadata">

**Author:** ![meeki007](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/meeki007/32/12499_2.png) [@meeki007](https://discourse.nodered.org/u/meeki007)\
**Post date:** [26 September 2019 11:14 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/13 "2019-09-26T11:14:59Z")

</div>

I cought myself a min before you were able to post.

my solution of.

![rl](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/a/a34bfb712eb0fc3a9b8dacf2bc9346b70f381d89.png)

should work

```auto
[{"id":"11dc9f7b.c1e209","type":"inject","z":"adeab68c.067be8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":600,"y":600,"wires":[["3b25ee70.1b299a"]]},{"id":"cc7c5ce1.485ef","type":"debug","z":"adeab68c.067be8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1110,"y":600,"wires":[]},{"id":"908c32ce.d43ba","type":"trigger","z":"adeab68c.067be8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"3","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":940,"y":600,"wires":[["cc7c5ce1.485ef"]]},{"id":"3b25ee70.1b299a","type":"delay","z":"adeab68c.067be8","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"3","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":780,"y":600,"wires":[["908c32ce.d43ba"]]}]

```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [24 May 2021 07:58 UTC](https://discourse.nodered.org/t/timer-after-rising-edge/15935/14 "2021-05-24T07:58:55Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
