Asked — Edited
Resolved Resolved by ptp!

Function For Counting Pulses On A Digital Input

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



Upgrade to ARC Pro

Harnessing the power of ARC Pro, your robot can be more than just a simple automated machine.


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.


@rz90208: 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.

ARC (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)


@ptp 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