Read signal (5v wave) get it's frequency, output converted frequency x2

What happens if you use my code for making the pulses. It does not depend on delay().

What you are experiencing is the fun and frustration of using interrupts. They can be very tiresome to debug.

Are you quite sure that the value of halfPulseWidth should not vary like your numbers indicate?

Are you quite sure that I wrote the code correctly?

What happens if you just print halfPulseWidth and don't bother with the digitalWrite() statements?

Maybe you should just interrupt on RISING or FALLING rather than CHANGE.

These are all things I would expect you to think of trying yourself without any prompting. Each of them only take a few minutes to try. The Arduino is a great device for learning by doing.

...R