Thursday, March 28, 2024
Embedded & MCUHow ToIoT HardwaresTutorials/DIY

UnoArduSim : A Simulator | Arduino Simulators Alternatives

Every Embedded Devloper or electronic enthusiasts knows and uses Arduino boards and Arduino IDE. I already published many articles on Arduino. Now we discuss UnoArduSim. The UnoArduSim is an Arduino simulator that allows you to do real-time code debugging on an Arduino Uno and Arduino Mega boards. This simulator is used for compiling and testing the codes.

UnoArduSim was developed by Professor Simmons of Queen’s University, Ontario, Canada. He used the platform to teach second year students of Department of Electrical and Computer Engineering. The graphical simulator was developed to allow students to test their robotic codes without requiring any additional hardware.

Arduino is a great platform, but If you’re trying to debug a program with a mix of software bugs and hardware issues, you could use a free helping hand! UnoArduSim.exe allows you to do a real-time test of most Arduino programs (for Uno, and Mega as of V2.8.0) without needing most actual hardware. Supported libraries are: TFT.h, SD.h, Stepper.h, Servo.h, SoftwareSerial.h, Wire.h, SPI.h, OneWire.h, and EEPROM.h (all for the Arduino V1.8.8 release)., as well as some 3rd party libraries for LCD and LED displays.

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.

Interface

UnoArduSim simulator has a very interactive and easy-to-understand interface. Interface of UnoArduSim is broadly divided into 3 parts. The code pane, Variable Pane and the Lab Bench Pane. There is a menu bar containing all the menu options and a toolbar containing icon for quick actions.

 

interface

Code Pane

Code pane part contains the code or the program or Arduino sketch. It can be used to track the execution when the code or sketch is running, here you can get any error or warning in the code with red color highlight. You can modify the code by double clicking. It has a useful feature that lets you conveniently select the built-in function calls (or built-in‘#define’ constants) to be included in to your code from the list provided.

Variable Pane 

It is situated under the code pane in bottom left side of the screen. It contains the current values for every user. The window also displays values of variables during execution.

Lab Bench Pane

The lab bench pane shows the selected Arduino board. It also has different peripherals which are selected using the Configure option. The microcontroller on the Lab Bench Pane behaves exactly like a real board. All the I/O devices and both the micro-controllers boards, i.e. ‘Uno’ and ‘Mega’ are very accurate. The electrical model of the components is good for analyzing the behavior of your program accurately, even the electrical pins will be flagged. For example: When you reset the board, the indicator LED blinks.

You can observe the waveform at each I/O pin. You have to click on the specific pins to see the digital waveform.

Waveform

Menu Bar 

The Menu bar contains all the option to operate and control the simulation, Here you can find many options such as File, Find, Execute, Options, Configure, VarRefresh, Windows and Help.

I/O devices 

Smaller ‘I/O’ devices and Big ‘I/O’ devices are two types of I/O devices. The smaller ‘I/O’ devices contains, push button, Switched Resistor, Piezo Speaker, Coloured LED, 4-LED Row, 7-Segment LED, Pin Jumper and Analog Slider whereas the Big ‘I/O’ devices have Servo Motor, DC Motor, etc. and it also have other peripherals such as MUX, Displays, etc.

i/o devices

A user can select a total of 16 smaller ‘I/O’ device and 8 Big ‘I/O’ devices.

Limitations of UnoArduSim

UnoArduSim has few limitations. The biggest limitation is that libraries such as <Servo.h>, <Wire.h>, <OneWire.h>, <SPI.h>, <EEPROM.h> can only be emulated. Their functionality is directly built into the simulator and hence the actual files are not searched.

Few Libraries are supported  – The supported libraries are ‘SoftwareSerial.h’, ‘SPI.h’, ‘Wire.h’, ‘OneWire.h’, ‘Servo.h’, ‘Stepper.h’, ‘SD.h’,’TFT.h’ and ‘EEPROM.h’. And therefore, the other libraries won’t work as the will contain unsupported directives and unrecognized files.

Real-time Emulation – The execution time of Arduino program instructions are not accurate as they are not modeled accurately, therefore for every loop a ‘delay()’ instruction is required to run your program that is synchronized to the real-time pin level changes.

UnoArduSim simulator has no support for function calls being made through user-declared function-pointers.

Arduino Simulators Alternatives

The most common simulators are:

  • Tinkercad Circuits
  • Virtual Breadboard & Avatar Hardware
  • PICSimLab
  • Wokwi
  • IO Simulator
  • Proteus
  • Fritzing

How to use the UnoArduSim?

First download the software from the website and unzip the file. Find the UnoArduSim.exe file and run the simulator by double click.

Now select your micro-controller board with help of Configure in the menu bar and open preferences,  TWI Bytes and it has features like auto indent, auto insert closing, etc. Choose the board and click on load.

preferences

 

Now, for selecting the Input and output peripherals, again click on the Configure in the menu bar and open ‘I/O Devices’.  You can get a pop up window here you can choose all the required peripherals from the given menu.

Write a Program for Device

Normally we write arduino code on Arduino IDE with .ino format. So if you have Arduino code in a ‘.ino’ or ‘.pde’ format, you could directly upload it by clicking on the File>Load INO or PDE.

To write the code, double-click on the Code Pane to open the editor. OR go to File >Edit/View OR Ctrl + E.

After writing your program, click on the compile button.

 

After your compilation is complete, select the required I/O and according to the pins assigned in your program, Assign the pins on the I/O peripherals by typing on the space provided in evert peripheral block.

Now, click on the Execute > Run option for executing the program.

Now, to see how your setup and code will perform by changing the input, change the values of the input peripheral by clicking on the buttons or change the values on the peripheral symbols to see how your system should perform.

Conclusion

The UnoArduSim is an easy-to-use simulator. 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. I hope you found this article helpful.

 

Harshvardhan Mishra

Hi, I'm Harshvardhan Mishra. Tech enthusiast and IT professional with a B.Tech in IT, PG Diploma in IoT from CDAC, and 6 years of industry experience. Founder of HVM Smart Solutions, blending technology for real-world solutions. As a passionate technical author, I simplify complex concepts for diverse audiences. Let's connect and explore the tech world together! If you want to help support me on my journey, consider sharing my articles, or Buy me a Coffee! Thank you for reading my blog! Happy learning! Linkedin

Leave a Reply

Your email address will not be published. Required fields are marked *