Based on Microsoft Visual Studio - The Community Edition is completely free,
Read more and download
Visual Micro is an extension to Visual Studio or Atmel Studio. After a simple installation and configuration, you can start to program your Arduino sketches right away.
Since Visual Micro integrates into Microsoft Visual Studio, you will have all the benefits of this great IDE. The user interface is optimized for the needs of developers and allows a great variety of customization, like arranging windows as you need them. You can have multiple source windows, a project structure tree, serial monitor windows, compiler output etc. You can also customize fonts, menus, keyboard hotkeys etc.
Intellisense is of great help when programming.
Autosuggest looks at what you type and makes suggestions for function calls. You see all functions of a chosen class at a glance, for library code as well as for your own:
Intellisense observes your code while you write it and identifies errors immediately, just like a spell checker in your word processing program.
You don't have to compile and wade through the compiler's error output. Instead, you see your mistakes immediately, including explanations, and can correct them:
Writing code that works is fun, but finding bugs can be time consuming. However, every project beyond a few trivial lines will have bugs that are often hard to find.
The Visual Micro Debugger helps you to track down bugs and to watch how your program works ( Read more). The Visual Micro Debugger works with all boards and does not require any special hardware or JTAG interfaces.
Breakpoints help you check how your code executes and comes in handy when you want to change anything to your hardware (sensors, motors...) without the running code disturbing you.
You can also set tracepoints that don't stop your code, but tell you which lines of code are passed.
You can also specify which text Visual Micro will show when a breakpoint is hit, this makes it easier to interpret the breakpoint messages.
The text in the output window can also contain expression values like the 'sensor voltage' in this example:
Breakpoints cannot only show static text, but also the values of your variables when the breakpoint was hit.
These valuable values will then be displayed in the special expression window:
You can't only watch variables, but also change them. This is a great way to check if your code works correctly and to simulate scenarios (e.g. sensor values) that are hard to create with the "real" hardware.