Congratulations ptp, for answering the question and has received an EZ-Credit award! Share what you have learned and create a tutorial to help others by clicking here.

Function For Counting Pulses On A Digital Input

Assistance Requested

Help Jim Milan with their question and receive $10 of EZ-Credit to get more robots and parts from our store. The following information was provided about their previous efforts searching tutorials for a resolution.

Product: (click to view product details)

EZ-Builder Control: (click to view manual page)

Jim Milan claims to have checked these sources:

I need to count the number of times a digital input detects state changes within a specified time window (100ms to 1000ms). Any suggestions?


I have found a few conversations, tutorials and activities that may help with your question. Take a look at these links. I've sorted them by what I believe to be most relevant but that is not always the case as I'm still learning.

Also, consider reviewing the Learn section for informative lessons and activities. Check it out!


with a loop, use the WaitForChange function to detect the change of the digital input.

I will post a code example when I get to my computer.


WaitForChange evaluates the condition every 10 ms, then you have the ez-script parser and communications overhead.

@Jim Milan:
if you need accuracy and/or the transitions are fast you will need a micro-controller e.g. Arduino, PIC.

EZBuilder (Desktop/Mobile) applications runs the logic code, EZB only handles the hardware.

you can try the EZ-Script maybe can work if your requirements are not "Real Time" :


#Monitor Port D23 changes for one second")



if ($current_value!=$last_value)

$timespan_sec=FmtTimeSpan($timespan, "ss")

if ($timespan_sec<1)
#Same timeout used in WaitForChange(...)

print("number_of_changes: " + $number_of_changes)


Thanks, your code worked. It was the kick start that I needed. I'm using a Parallax X-Band (10.525 GHz) Motion Detector in my latest ARMadeus robot. The unique feature of this sensor is that is capable of detecting motion though walls. I understand the 1 second limitation by using the system $date function. Since the sensor has an enable pin, I may tinker with a combination of Set(DigitalPort, ON/OFF) and Sleep(ms) commands to generate an adjustable enable pulse.

Jim Milan