I think the best way to experiment with projects that you aren’t sure they’ll work or they might possibly blow something up is by simulation. In Arduino’s case, the first thing you can do to assure that things are going to be working smoothly is verifying the sketch, since that’s the brain of the project. If the sketch compiles successfully, then hooray! You’re one more step closer to your project’s success. But a sketch that runs doesn’t necessarily mean it won’t have logic flaws, or have an unexpected behavior. But even if the sketch is working correctly, you can have problems with the physical parts: what if you miscalculate the value of a resistor and you end up pulling more amperage than necessary? There’s no one to warn you but your own mistake that will surface at some point, by means of a fried part.
There’s another reason for using simulators: the actual physical parts! I’m sure that the average amateur( like me :D), even if he accumulated some things in the parts bin, won’t always have access to the exact value components, or other valuable or more expensive parts. So, obviously, a simulator could come in handy.
Last but not least, time! Sure, for things like blinking a LED that’s not a problem, but add a LED matrix and some shift registers. And then think about this not working. Frustration ensues.
Considering these points, I thought that after the first search I’ll surely find something useful for this manner. I was proven wrong.
I found two promising solutions up to this point, but they both disappoint me in different ways.
Let’s talk about the first one, which is simply called “Simulator for Arduino”.
Now, I won’t say this isn’t a great simulator. It somewhat simplifies prototyping. All you have to do is load the saved sketch in the program and then hit the “Run” button. It offers scroll bars for controlling live analog control of the inputs, and it steps through the code for a better understanding of it. The speed of the simulation( delay between steps) is controlled by the input field near the run button. The default delay is 250ms. My problem with it is the poor visual feedback. This program puts an overlay of information over a photo of the Arduino board. This just seems ugly or outdated to me. The presence of a live value table for sketch variables is nice, but it isn’t coupled with an actual visual display of components. This isn’t a problem for a couple of blinking LEDs, but again, if you have many outputs and inputs it becomes hard to follow the simulation. The fact is that it’s not very suited for beginners. And it’s not free either. I mean there is a free version for this, but it has an annoying delay for loading sketches. It has a 30 seconds delay for loading a sketch, and the sketch must not exceed 100 lines.
The second one is “Virtual Breadboard”. The free version of this is called “Virtual Breadboard Express”. Let me not waste your time with details and tell you right from the start that it’s useless unless you buy their hardware. Yes, you have to actually buy a shield named “IceShield”, plug it in the Arduino, then into your computer, and then you can simulate projects on the computer. Perhaps I have not read the details, but this sounds silly. Seems like the “pro” version actually has software simulation.
I’ve also found “ArduSim”, but I couldn’t test it because it seems it’s developed to work with the Code::Blocks IDE, and I don’t have that installed at the moment. From the screenshots though, I can see it’s a command prompt simulator. Hmm, is it just a debugger? Well, seems like not something for beginners.
Unfortunately, I’ve yet to see a simulator that combines the functionality of the above “Simulator for Arduino” and the esthetic design of Fritzing.
If I made any mistakes when talking about these programs, please leave a comment and I’ll happily update the article.