ArduinoTEP board search in Proteus, Arduino Proteus library, AVR board models, LED blink tutorial

Arduino Library for Proteus

2.5K Views
40
700
60
25
60
PCBWay

Hello friends! In this tutorial, we will install the Arduino Library for Proteus and use it to simulate a small Arduino circuit. This package brings several classic Arduino board components together, so you can choose a board that matches your project without installing each original library separately.

Updates

Arduino Library for Proteus

Latest version: Arduino Library for Proteus V4.0 (October 2026): six boards with working LEDs, a RESET button and a built-in serial monitor

Earlier versions: V3.0 (2023) · V2.0 (2021) · V1.0 (2015, this tutorial)

Helping Tools

We will begin with the included boards, then install the library and prepare a compiled program. Our first example uses an Arduino UNO and an LED. After that, we will discuss how to move the same source code to another board without overlooking processor, clock or pin differences.

The original download, screenshots and demonstration video remain attached. This is the V1.0 tutorial; newer versions are linked below. The goal is to understand the complete workflow, including what a board library provides and what still depends on the simulator's processor and peripheral support.

ArduinoTEP board search in Proteus, Arduino Proteus library, AVR board models, LED blink tutorial
Figure: ArduinoTEP board search in Proteus.

What Is Included in This Arduino Library?

The combined library contains six classic board components: UNO, Mega 2560, Mega 1280, Nano, Mini and Pro Mini. These boards do not all use the same microcontroller. Their drawings can look similar while their available memory, interfaces and compiler targets differ.

BoardProcessor family representedUseful reason to choose it
Arduino UNOATmega328PA familiar starting point for simple circuits and introductory lessons
Arduino Mega 2560ATmega2560More I/O, program space and hardware serial interfaces
Arduino Mega 1280ATmega1280Reproducing projects intended for the earlier Mega board
Arduino NanoClassic ATmega328-family boardA compact breadboard-oriented project layout
Arduino MiniClassic AVR Mini variantProjects using that board's particular connections
Arduino Pro MiniClassic AVR Pro Mini variantCompact projects with an external programming interface

Confirm the exact device and clock in the component you place. Classic Mini and Pro Mini boards have existed in different processor or voltage variants. The board label is the beginning of target selection, not a substitute for checking the component properties and matching IDE option.

The Mega 1280 and Mega 2560 are not interchangeable processors merely because their boards look alike. Compile for the intended target. The official Mega 2560 reference describes its ATmega2560, 54 digital I/O pins, 16 analog inputs and four UARTs, which explains why it can suit projects with several peripheral connections.

Classic Arduino board components in Proteus, Arduino Proteus library, AVR board models, LED blink tutorial
Figure: Classic Arduino board components in Proteus.

The historical group image does not show every included board separately. Use the component picker and the package's device names to identify the actual selection rather than inferring the complete contents from that illustration.

Original and Newer Library Releases

For the newer combined release, see Arduino Library for Proteus V4.0. Its guide covers the six boards with working LEDs, reset controls and built-in serial monitors. Earlier combined releases are documented as V3.0 and V2.0.

Keep the files from a chosen release together. Installing one version's library file with another version's support files can produce confusing errors. The original package described here should be evaluated using its own features, not the user interface shown in a newer tutorial.

Download and Install the Library

Download the original combined archive below. Its stored attachment uses a RAR archive, so extract it with a tool that supports that format. Do not simply rename its extension to ZIP.

Arduino Library for Proteus

The original installation uses ArduinoTEP.LIB and ArduinoTEP.IDX. These are Proteus library files. They belong in the library location used by Proteus, whereas Arduino IDE libraries contain source code and are installed through a different workflow.

  1. Close Proteus before copying the library files.
  2. Extract the downloaded archive into a working directory.
  3. Locate the LIB and IDX files in the extracted contents.
  4. Find the library directory used by your Proteus installation.
  5. Copy the matching file pair into that directory.
  6. Restart Proteus and open the component picker.
  7. Search for ArduinoTEP, then select the board needed for your circuit.

Do not assume that a Library folder inside an arbitrary program directory is the one your installation searches. Check the configured paths or follow the Proteus library-installation guide. Preserve a known working release before replacing it in an existing project.

If you installed several original board-specific packages previously, the search results may contain multiple related components. Select the intended library entry and record its release with your project. A board already placed on a schematic may retain its existing definition; copying a new file does not necessarily rebuild that placed instance.

What Installation Does Not Guarantee

A component appearing in the picker confirms that its library information was found. Running its firmware also requires an appropriate processor simulation model and any supporting peripheral models. A symbol with the correct artwork is not by itself a complete executable simulation.

Use a properly licensed Proteus configuration that supports the intended processor. If the simulation log reports a missing model, investigate that specific requirement. Reinstalling the Arduino IDE or changing the sketch's LED pin will not fix a missing processor simulation capability.

Prepare Firmware for the Selected Board

Arduino source code normally lives in an .ino sketch, while the AVR simulation loads a compiled program such as an Intel HEX file. Compilation translates the code for a particular processor and links the Arduino core functions and any required source libraries.

Select the board before building. For the first example, choose Arduino UNO in the Arduino AVR Boards platform. The official Arduino AVR board definitions show why this matters: board selections provide processor, clock and variant settings to the build process.

Compile the sketch and export the compiled binary using your IDE's export command. For direct loading into this simulation, use the ordinary application HEX unless the chosen model documents a different requirement. A separate with_bootloader image is intended for a different programming situation and should not be selected only because its filename looks more complete.

Keep the exported file alongside the schematic in a recognizable folder. A temporary build path can change between sessions, while a manually copied file can become outdated if you forget to replace it after editing the sketch. Establish one clear place for the executable you intend to simulate.

Build an Arduino UNO LED Test

Place the UNO component and connect D13 through a resistor to the anode of a red LED. Connect the cathode to ground. Use the board's documented power arrangement and a common ground for the circuit.

Arduino UNO LED blinking circuit, Arduino Proteus library, AVR board models, LED blink tutorial
Figure: Arduino UNO LED blinking circuit.

An external LED makes the test independent of whether the original board graphic animates its onboard indicator. It also lets you follow the complete current path. The resistor can be placed on either side of the LED as long as it remains in series.

For a simple estimate, assume 5 V at the output, a 2 V LED drop and a target current of 5 mA. The required resistance is (5 - 2) / 0.005 = 600 ohms. A 680-ohm resistor gives approximately 4.4 mA under these assumptions. Check actual output and LED characteristics when moving to hardware.

const byte ledPin = 13;
void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
}
void loop() {
  digitalWrite(ledPin, HIGH);
  delay(500);
  digitalWrite(ledPin, LOW);
  delay(500);
}

Double-click the UNO model, set Program File to the exported HEX and confirm its 16 MHz clock. Start the simulation. The expected waveform is high for half a second and low for half a second, giving a one-second period, 1 Hz frequency and 50 percent duty cycle.

Arduino UNO LED blinking simulation, Arduino Proteus library, AVR board models, LED blink tutorial
Figure: Arduino UNO LED blinking simulation.

The animation is retained from the original demonstration. It illustrates the intended result; it is not a new execution report for every installed Proteus version. If the observed result differs, compare the actual schematic, compiled target and model properties before changing the example.

Move a Sketch Between Boards Correctly

Source-code portability and binary compatibility are different questions. A sketch using standard Arduino functions may compile for several boards, but the executable must still target the processor in your simulation. Do not load an ATmega328P image into a Mega model and expect the board library to translate it.

When changing boards, first update the IDE target and clock option, then rebuild. Next check every connection by its Arduino pin label and peripheral function. The physical position of a pin on one drawing does not identify the corresponding pin on another board.

Item to reviewWhy it matters
Processor selectionInstruction target, registers and memory layout must match
Clock selectionDelays, UART baud and timer behavior depend on it
Peripheral pinsI2C and SPI appear at different header locations across boards
Serial port objectA Mega can use additional hardware UARTs that a classic UNO does not have
Logic voltageExternal devices must tolerate the actual signal levels
Memory usageA sketch that fits one processor can exceed another's resources

For example, classic UNO I2C uses A4 for SDA and A5 for SCL, while Mega boards expose the corresponding bus through different Arduino pin assignments. Replacing the board graphic without checking the bus wiring can leave a correctly compiled program communicating with no connected device.

Likewise, a Pro Mini may use an 8 MHz configuration rather than the UNO's 16 MHz setting. Code built for 16 MHz and run at 8 MHz takes roughly twice as long for clock-dependent operations. If blinking and serial communication both behave incorrectly after a board change, inspect this mismatch first.

Keep a Small Board Test

Save the working LED example separately from the main project. For each board variant, compile it with that board's settings and check the expected timing. This provides a known starting point before you introduce a sensor library, communication protocol or larger application.

Write down the intended board, processor, clock and HEX path in the project notes. When you return to the project later, those four details are more useful than a filename such as final2.hex that does not identify its target.

Add Sensors and Communication in Stages

Once the board test runs, add a single peripheral. Establish its power and signal interface before adding application logic. A digital sensor model may use an interactive test input, a fixed stimulus or a register interface; follow that model's documentation rather than assuming its artwork reproduces every physical behavior.

For I2C, check the sensor address, SDA/SCL connections and pull-up arrangement. Two devices with the same fixed address cannot be independently selected on one bus without an additional arrangement. A successful scan confirms an address response, not necessarily correct measurement conversion or unit scaling.

For UART, connect transmit to receive in each direction and configure the same baud rate and framing at both ends. A simulated UART terminal and a physical computer serial port are separate interfaces. Do not assume the IDE Serial Monitor automatically connects to the board inside Proteus.

For SPI, check clock polarity, clock phase, bit order and chip selection as well as the shared data lines. A wrong chip-select connection can look like a software-library failure even when the compiled program is running correctly.

Our related models include GPS, XBee, ultrasonic sensing, PIR sensing, Bluetooth and flame sensing. Each requires its own model-specific setup.

Separate Electrical Tests from Application Tests

Consider a motion-controlled lamp. First establish that the sensor's simulated output changes. Next confirm the Arduino reads the assigned pin. Then check the program's decision and delay logic. Finally, test the output driver. Combining all four steps at once makes an unexpected result much harder to explain.

Use low-voltage indicators while developing control logic. A real relay, motor or high-power load needs a suitable driver and supply arrangement. The Arduino board model does not make a direct microcontroller connection suitable for every load shown on a schematic.

Read Simulation Results Carefully

Watch the simulated timebase when measuring delays. The host computer can run a complex simulation slower than real time, so wall-clock observation is not a reliable way to determine the firmware's interval. Use a logic analyzer, oscilloscope or the simulator's timing tools when the waveform matters.

For a digital output, record the high time, low time and repetition period. For serial data, inspect the transmitted bytes and line settings. For analog input, compare the applied voltage, reference voltage and expected ADC result. A visual change alone may not establish the numerical behavior required by the application.

As an illustrative ten-bit ADC calculation, an ideal converter with a 5 V reference has a nominal step of 5 / 1024, approximately 4.88 mV. A midscale input near 2.5 V should produce a code near 512. Real reference error, sensor error and converter characteristics still matter on physical hardware.

Do not infer battery life, radio range or regulator temperature from a processor-level simulation unless the specific models and measurements support that conclusion. Simulation is particularly useful for repeatable firmware inputs and logic behavior; physical implementation adds effects that may not be represented.

Troubleshooting Checklist

Observed problemUseful next step
No ArduinoTEP search resultsConfirm extraction and the configured library directory, then restart Proteus
Several similar boards appearIdentify the intended library release and avoid mixing components accidentally
Missing simulation model errorCheck the processor support required by that component
HEX file loads but nothing happensCheck target, power, reset state and a minimal output test
Timing differs by a fixed ratioCompare the compiled clock with the model's clock
Peripheral fails after replacing the boardReview pin mapping, bus instance and voltage assumptions
New code seems ignoredRebuild and confirm the selected HEX file's location and timestamp

Change one suspected cause at a time. If you replace the model, rewire the sensor and modify the sketch together, a successful result will not tell you which change fixed the issue. Keep a short record of the configuration that first produces the expected output.

Library Review and Version-Specific Guides

The combined package is convenient for learning and for projects that use several classic Arduino board layouts. Its value is easier component selection and a consistent starting workflow. It does not promise that every Arduino product or every third-party peripheral is supported.

Individual V4.0 tutorials are available for UNO, Mega 2560, Mega 1280, Nano, Mini and Pro Mini. Choose the guide matching the component you actually install.

For further work, see the Genuino library, LCD Library V3.0, Serial Monitor Advance and Serial Monitor Expert. Add those components after your selected board passes its simple firmware test.

The original video remains below as a visual reference for the historical installation and demonstration. Menu appearance and library features can differ in newer versions.

Frequently Asked Questions

Does this archive include every Arduino board?

No. It contains the six classic board models listed in this tutorial. Boards such as Due, Yún and newer Nano variants need their own appropriate models and firmware targets.

Can one compiled HEX file run on all six boards?

No. Recompile for the selected processor and clock. Similar source code can be portable while the resulting machine-code image remains target-specific.

Do I install ArduinoTEP.LIB through Arduino Library Manager?

No. It is a Proteus library file. Arduino Library Manager installs source libraries used during compilation; the two installation paths are separate.

Why is Mega 1280 not shown separately in the old board image?

The historical illustration did not show it separately. It is listed as part of the package, but it remains a distinct processor target from Mega 2560 and must be selected accordingly.

Should I replace an existing working library immediately?

Keep the working project and its dependencies first. Test a newer release in a separate example, compare its documented features and then migrate deliberately rather than changing several dependencies at once.


Comments

86

Join the conversation

1 reply
Reply2

Can you fix some bugs for example :
- Analog pins not work properly like ADC
- Some pins cannot be connected
Thanks and good work

1 reply
Reply5

Very informative and amazing post about "Arduino Library for Proteus". I like your explanation way. And also like your concept of post, i will surely use this concept on my arduino project. Thanks for sharing a great post.

Reply6

Thank you very much Syed! I downloaded the ArduinoTEP.LIB and ArduinoTEP.IDX files according to your instructions. However, when I opened Proteus 8.0, just the Arduino Mega 2560 and the Arduino Mini models are available in the Arduino library. Why? I need the Arduino UNO, please.
Thank you in advance!

1 reply
1 reply
1 reply
1 reply
1 reply
Reply15

Hello Sir,
I'm desperate, I follow all the steps but I can not install the arduino library in proteus 8.2.

I allocate files ...tep.idx and ...tep-lib on program data labcenter proteus and library folder but when in pick devices I type arduino dont show me the models.
Can you help me pls
thanks in advance

Reply16

sir,
hi this is naimatullah
i am always followed you .sir i want to know how to pakaging the proteus part .
so i am waiting for your +ve reply.

Thanks
Naimatullah

Reply18

Good Job Syed Zain Nasir, Libraries works excellent, do you finished with ethernet shield library for proteus? I would like to use it

Reply20

Great work, thanks a lot for your efforts

But I have noticed that you are missing 3.3V pin in Arduino Nano(Between D13 and REF pins)

1 reply
Reply24

Hello Syed,

Thanks for the fantastic proteus libraries.
Is there a proteus arduino ethernet-shield (inc. SD-card) available for simulation?
That would be great for testing purposes.

Thanks.
TC

Reply26

could you plz tell me how to create proteus libraries using dll and programmatic techniques like you did with this.
really really wanted to try it
thanx

Reply27

Please help me out I have installed proteus 8software to my laptop while opening it's shows dxllibrary.dll error what to do now.....?

Reply28

Hi!
i want to use nRF24L01 in proteus. Please suggest how can I add nRF24L01 to proteus library or suggest any other.
Tks
sidmarns@hotmail.com

1 reply
Reply28.1
Replying to adiono

Hello!
I need the same library and I would like to know if you received the answer of your question.
Do you received the answer? If yes, may you please send me the link to download the library?
Thank you in advance!

Reply31

Hi,sir!
I find my arduino uno module there is a difference from the model in this website.I cannot find the VCC and GND.Could you tell me,THANKS

Reply32

Its a nice piece of article and very informative. I was wondering if you can provide me solar cell library (if one exists) or at least guide me how we can mimic solar cell in Proteus. I am kind of a stuck in the middle of my project.

Reply35

thank a lot friend for your valuable contribution on make sure engineer students are getting enough libraries for Proteus would like to request would you provide library module for water leakage sensor please consider that.

1 reply
Reply37

Hello sir,
Please how I can play an mp3 or wav type sound using an arduino uno card and a memory card that store the sound.
The code if you like.
Thank you in advance, I await your answer.

Reply38

Hello,
I have copied the file onto my library. I am able to find the arduino uno but the problem is that the Vcc and Gnd terminals are not coming in the analog input side only reset is visible.

Reply47

Thank you very much for the great work
however, if you could show how to solve the issue with binding in VSM.
there are some Arduino in the proteus 8.7 that source code can be added directly to them but when trying to edit source for the provided Arduino in your library after using the wizard to add new firmware, there is an error that says Failed to bind project to an existing processor.

1 reply
Reply50

Hello,
I have copied the file onto my library. I am able to find the arduino uno but the problem is that the Vcc and Gnd terminals are not coming in the analog input side only reset is visible.

Reply54

Hello.
I use your library for ISIS, Arduino Nano.
But when reading an analog signal using the built-in ADC in Proteus - your library produces a result that differs from the real Arduino.
For example, when measuring resistance 1kOm - the library returns the result of 80, while the real Arduino reports from the Serial series - the value 500 (out of a possible 1023). If you close the + 5V wire and the analog input in the Proteus simulation - the library will return the result 1023, as expected.
The algorithm of the ADC needs to be improved. Can I help with implementation? How soon are fixes possible in this library? I would be glad to communicate in all available ways.

Reply55

Hi sir ,
Thank you and your team for your efforts , which we appreciate it.
Actually I'm in a need for your help , I'm working on a graduation project .....and I need the Arduino due library please
I hope you reply and I will be very glad if you did

1 reply
1 reply
Reply59

Great job, however even if simulation works, the library make proteus crashes with a Fatal Error (Internat Exception: access violation in module 'UNKKNOWN' [04B34267].).
It happen after 1 or 2 minutes in designing or simulating, even when doing nothing.

The second issue I have when proteus is not crashing, is that timing is not correct, I have delayMicroseconds(1000000) in my code that seems ignored when it is supposed to wait 1 second.

Thanks for any reply.

Reply67

Hi,
I did all the instructions given above. but Arduino library doesn't appear in my proteus.
could you please advise me to solve the issue?
thanks

1 reply
1 reply