UnoArduSim provides a virtual target Uno board and allows the user to choose, and interface to, one or more of several types of virtual input/output devices. These include typical hobbyist DC gear-motor, stepper-motor, and servo motors, generic serial devices with selectable baud rate, generic I2C and SPI slaves, as well as I2C and SPI based LCD and LED controllers and port exapnders, an SD card and TFT display with SPI interfaces, digital and analog waveform generators, piezo speakers, LED's. 7-Degment LED digits, push-buttons, resistive pull-ups and pull-downs, and slider potentiometers. All devices are accurately modelled electrically (and mechanically).
You can load and edit (and correct) your Arduino program, then run, run-to, halt, step-into, step-over, and step-out-of while watching all accessible program variables and monitoring pin levels (and even pin waveforms, which can also be saved). Simple and clear parse and execution error messages are provided.
UnoArduSim is a free educational tool for everyone to use.