Simulator for Mac

If you are trying to simulate external devices under the control of an arduino, consider simulating their physics and effects within the Arduino with a separate function called inside loop().

If you can simulate the device under control well enough, it makes it easier to write and test your control code.