NewPing Library: HC-SR04, SRF05, SRF06, DYP-ME007, Parallax PING))) - v1.7

Mr-What:
I have run the pin-change interrupts on UNO... the official pin-change interrupt libraries are tested for UNO, NOT mega.

Either way, you will see that this is kind of hard-coded to my app.
It gets very tricky when you want to use specific pins so they share the same interrupt vector.
So tricky that I gave up on "proper" programming, and kind of hard-coded pin assignments and interrupts.

My application runs on a constant poll, and will call .timeout() when more than about 20000us have passed.
That is not shown... since I just posted my original test script demonstrating use of pin-change interrupts for a sonar array.

My bad, pinchangeint supports Uno with partial Mega compatibility.

Don't you have to wait at least 29 to 35ms? The sensors work at up to 500cm, which means the pings are still bouncing around for up to 28,500uS.

Also, when I've tried to fire multiple sensors simultaneously, it really only worked well in wide-open spaces. In more closed environments, I'd get cross-sensor echos at times making it unreliable.

With this said, using the Teensy 3.0 is really nice as every pin can be an interrupt. You may want to consider this as it would make things a lot easier. Not to mention the extra horsepower the microcontroller will give you.

Tim