Top 38 Arduino Interview Questions You Must Prepare 25.Apr.2024

Open-source hardware shares much of the principles and approach of free and open-source software. In particular, we believe that people should be able to study our hardware to understand how it works, make changes to it, and share those changes. To facilitate this, we release all of the original design files (Eagle CAD) for the Arduino hardware. These files are licensed under a Creative Commons Attribution Share-Alike license, which allows for both personal and commercial derivative works, as long as they credit Arduino and release their designs under the same license. The Arduino software is also open-source. The source code for the Java environment is released under the GPL and the C/C++ microcontroller libraries are under the LGPL.

The 8u2 can be programmed by soldering a 6-pin ISP header (the R3 has the 6-pin header pre-soldered in) and using a standard AVR programmer. You can also use the bootloader (DFU) in the 8u@On first generation Unos, you enable this by soldering the 10K resistor right underneath the board. (R2 and R3 versions of the Uno use the 16U2 and do not require the resistor!) Again, we don't have any examples or tutorials but hope to shortly.

The code for the 8u2 is based on LUFA, Dean Cameran's totally awesome USB-AVR library that has great examples and documentation. Its also completely open source.

All previous shields should still work perfectly fine as the header spacing is the same, the core chip is the same and the location of parts is the same. In fact, some should work better because the 3V supply has been upgraded.

Sure. It's just an AVR development board, you can use straight AVR C or C++ (with avr-gcc and avrdude or AVR Studio) to program it. 

The FT232RL had an internal oscillator whereas the 8u2 does not. That me there is a 16mhz crystal next to the 8u2 to allow it to keep up with precise USB timing.

On the other hand, the Atmega328p chip that is the core processor in the Arduino now has a 16mhz ceramic resonator. Ceramic resonators are slightly less precise than crystals but we have been assured that this one was specified and works quite well.

Yes, alternative serial monitors can be used. The arduino connects with the computer using a virtual serial port over USB. This me any application on your computer can potentially connect with the Arduino. Not to mention the fact you can write your own programs which can talk to your project using the serial port.

I have personally used HTERM and it met all my needs. Many people have used the other listed applications with positive results.

While it is possible that the 8u2 could act as a full ISP programmer there are a few reasons why its good that it isn't.

  1. Giving beginners access to a full ISP programmer will result in bricked chips. There's no risk of messing up the Arduino chip beyond recognition if it's just being bootloaded
  2. Having the chip act only as a USB/serial passthrough simplifies the firmware so that the chip has only one function instead of having to have it do double duty as programmer -and- serial interface (think about it, its not easy)
  3. Backwards compatibility - the Arduino chips can still be programmed with FTDI breakout boards or cables, making it easy for people to breadboard or make clones.

Yes, you can use Create web editor to program your board without the need of download the classic IDE.

While the appearance of a hard-to-get chip coupled with the VID/PID mishegas may seem to be a little annoying, we don't think that me that the Arduino team is being malicious or attempting to make life difficult for people who make derivatives. The move to an '8u2 makes the Arduino more powerful, and easy to use as there are fewer drivers to install. While there is a shortage now, there will eventually be plenty of chips on the market.

Some people in the Arduino forum have thought of forming a group that would purchase a VID for Arduinites to use in personal projects. This is a pretty good idea and its probably the best way to avoid VID/PID conflicts. Between 65,536 projects, that comes to under a nickel per PID.

And of course, because they didn't get rid of the bootloader system, you can always just use an FTDI chip.

Classes and structures directly in the sketch file can have problems when used as the parameter to functions.

The littleBits Arduino module is programmed through the official Arduino IDE. We are actively looking into supporting block programming software options to make using the module that much easier.

While creating a sketch in the Arduino IDE, you have access to a number of different file extensions for use with your source code files. Each one has its own particular use which I'll explain below.

  • .ino : This is the main extension for your sketch file(s). Your primary sketch file must be an .ino file named the same as the directory it is located in. You can create additional .ino files in your sketch named however you like. Before compilation, all additional .ino files are appended to the primary sketch file. They are copied in ascending order based on the file name, and all are run throguh the standard process of gathering includes and generating prototypes. For more information on what the IDE does beofre compiling your code, visit this FAQ: What does the IDE change in my sketch?
  • .pde : This is the default extension for sketches written for the Arduino IDE prior to the release of version 1.@if you use an IDE version of at least 1.0.0 or greater, you should rename your sketch file from .pde to .ino. Also keep your IDE up to date, pre 1.0 versions do not support many new libraries due to significant changes to the Arduino core API.
  • .h : Header files, or files with the extension .h can be utilized in a number of ways. If your sketch uses a set of constants that multiple .cpp or .ino files may use, you can create a single location for your common variables. Functions that are defined in different .cpp files can have their declarations placed in a header for easy reuse.
  • .cpp : This extension is a C++ source file. Sometimes a sketch becomes quite large and you can utilize a .cpp file to separate sections of your code. Definitions inside a .cpp file that you want to access elsewhere should have their declarations inside a header (.h) file. This allows your sketch to include the header, and its functionality. Also an important point is; your .cpp files do not go through the IDE pre-compilation modifications, and therefore have no prototypes generated. For more information on using multiple files, visit this article: Breaking a sketch into multiple files.
  • .c : If you wish to write C code and use it within Arduino, you need to use a .c extension instead of a .cpp file. Using a .c file alone however is not the complete solution.

No. The littleBits Arduino module is essentially an Arduino Leonardo/Micro board with some added features and littleBits’ bitSnap™ connectors. It can be programmed like an official Arduino board from the Arduino IDE software.

Yes, with the following conditions:

  • Physically embedding an Arduino board inside a commercial product does not require you to disclose or open-source any information about its design.
  • Deriving the design of a commercial product from the Eagle files for an Arduino board requires you to release the modified files under the same Creative Commons Attribution Share-Alike license. You may manufacture and sell the resulting product.
  • Using the Arduino core and libraries for the firmware of a commercial product does not require you to release the source code for the firmware. The LGPL does, however, require you to make available object files that allow for the relinking of the firmware against updated versions of the Arduino core and libraries. Any modifications to the core and libraries must be released under the LGPL.
  • The source code for the Arduino environment is covered by the GPL, which requires any modifications to be open-sourced under the same license. It does not prevent the sale of derivative software or its inclusion in commercial products.

In all cases, the exact requirements are determined by the applicable license. Additionally, see the previous question for information about the use of the name “Arduino”. 

In fact, you already are; the Arduino language is merely a set of C/C++ functions that can be called from your code. Your sketch undergoes minor changes (e.g. automatic generation of function prototypes) and then is passed directly to a C/C++ compiler (avr-g++). All standard C and C++ constructs supported by avr-g++ should work in Arduino. 

There are a few different solutions you can use, there are plugins and modifications for mainstream IDE packages. And a few talented people have created standalone applications specifically for Arduino and AVR development.

The official Arduino boards are the ones listed on the product page. These are boards whose manufacturers work with the Arduino team to ensure a good user experience, compatibility with the Arduino software, and a quality product. In return for their status as official boards, the manufacturers pay a licensing fee to the Arduino team to support the further development of the project.

In general, we restrict use of the name "Arduino" to the official boards. If you find a product under a different name but described as "Arduino compatible", it’s probably not an official board and doesn’t fund continued work on the project.

You can buy an Arduino board from the official store online or from one of the distributors listed on this page. If you'd prefer to build your own, see the Arduino Single-Sided Serial board, which can be easily etched and assembled.

Arduino is used by students coming from almost every discipline at university level. Art and design students were our initial user group from, but by making the system easy to use to them, we made it easy for everybody. Many design studios, but also research groups, started using Arduino technology for its ease of use, as it makes things that should be easy to solve, easy to solve. Since Christmas 2011, Arduino is also sold at retail stores (e.g. at Swedish Kjell & Co) . Who knows how many electronics aficionados there are making projects in their spare time.

The reason is that the first Arduino used the Atmega8 which could not run faster than 16Mhz. As the chip has been upgraded they wanted to make the boards speed compatible. Arduino is also not really intended for fast-processing (its only 8-bit anyways) so the chips are running at 16MHz.

To program the littleBits Arduino module, you simply connect it to a computer running the Arduino software via USB and connect a littleBits power module to one of the module inputs. From there, you only need to select Arduino Leonardo in the board dropdown menu and the port your computer has opened for it. On a Mac, it will be something like /dev/tty.usbmodem and in Windows, it will display as COMM1 or similar. When your sketch is ready, press upload in the IDE.

If you're creating tutorials, managing a local community of Arduino users, opening up an Arduino-focused page online (ie. social networks) you can use the Arduino Community Logo! This will allow people identify better what comes directly from us, and what comes from the community. 

The IDE makes subtle changes to the code when you compile your sketch. The changes are not permenant as a copy of your sketch is used to do the compiling. This is a consequence of the IDE allowing you to compile the sketch without saving into a file, which is what the compiler requires.

In a breif rundown, the IDE does three major activities.

  • Adds an include file for the Arduino core: This process is a fairly harmless addition, if users include Arduino.h explicitly, the header has #ifndef guards protecting it from multiple declaration errors which is typical when including an unprotected header into multiple locations.
  • Generates function prototypes: This is also a generally unobtrusive step. As with protected include files, you can have multiple declarations of a function, it is the definitions which must be unique.
  • Collects included libraries: As the sketch is compiled in a temporary location, the IDE needs to ensure all include paths are valid. To accomplish this the IDE sc the sketch for all headers that match files residing in the libraries folder, then it simply copies the library source files into the temporary location along with the sketch.

This has been a source of error for many new Arduino users attemping to write their own libraries. As confusing as it sounds, any library included into other libraries must also be included in the sketch; simply so it can be copied to the temporary location.

To show a quick example of what the modifications look like; here is the BareMinimum sketch, and its modified result.

  • Before---expand source
  • After----expand source

The modifications performed are great for beginners that do not know the C++ fundamentals required for building simple sketchs. The sketch looks tidier to the novice with only a setup()/loop() implementation cluttering up the workspace. However once you start using certain C++ features you can run into some common pitfalls as a result of these modifications.

Since we started, we can proudly say that we have helped in trforming education at many universities and schools around the world. We are now analysing how to approach education at high schools, but also how to manufacture locally to have the largest possible reach. Nowadays, 80 percent of the Arduino branded devices are manufactured in Italy, but the import taxes in countries in Latin America, or other places like India or China, makes it hard for the official boards to reach those countries. We are also very engaged in the design of artefacts that will make the Internet of Things possible, but also thinking about new educational tools like robots or boards oriented towards 5-and-6-year-old kids.

The reference designs for the Arduino boards are available from their specific product pages. They're licensed under a Creative Commons Attribution Share-Alike license, so you are free to use and adapt them for your own needs without asking permission or paying a fee. If you're looking to make something of interest to the community, we'd encourage you to discuss your ideas on the hardware development forum so that potential users can offer suggestions. 

The Arduino team has indicated they thought about this but preferred that hackability of a DIP chip. 

Right now there are a few Arduino's with a 32u4 chip such as the Leonardo, Micro and Esplora.

Arduino is an open-source electronics platform based on easy-to-use hardware and software. Arduino boards are able to read inputs - light on a sensor, a finger on a button, or a Twitter message - and turn it into an output - activating a motor, turning on an LED, publishing something online. You can tell your board what to do by sending a set of instructions to the microcontroller on the board. To do so you use the Arduino programming language (based on Wiring), and the Arduino Software (IDE), based on Processing.

Over the years Arduino has been the brain of thousands of projects, from everyday objects to complex scientific instruments. A worldwide community of makers - students, hobbyists, artists, programmers, and professionals - has gathered around this open-source platform, their contributions have added up to an incredible amount of accessible knowledge that can be of great help to novices and experts alike.

Arduino was born at the Ivrea Interaction Design Institute as an easy tool for fast prototyping, aimed at students without a background in electronics and programming. As soon as it reached a wider community, the Arduino board started changing to adapt to new needs and challenges, differentiating its offer from simple 8-bit boards to products for IoT applications, wearable, 3D printing, and embedded environments. All Arduino boards are completely open-source, empowering users to build them independently and eventually adapt them to their particular needs. The software, too, is open-source, and it is growing through the contributions of users worldwide.

Yes, although it may require some modifications to the Arduino core libraries. 

I prefer talking about projects that I have made that have inspired others. I made a robot called Oh_Oh to teach kids in a poor neighbourhood in Mexico City. Together with Xun Yang, a graduate from K3 at Malmö University, we created a robot and a whole series of exercises around it in about one month. The CCEMX (Spanish cultural center in Mexico) financed part of the development, but we still went for local manufacturing and minimising the budget as much as possible.

Probably not. The Arduino team buys chips in the 10's of thousands, directly from Atmel. They probably get priority over distributors because of this. We're assuming the team bought enough to last for a while.

If you're making your own board, come up with your own name! This will allow people identify you with your products and help you to build a brand. Be creative: try to suggest what people might use the board for, or emphasize the form factor, or just pick a random word that sounds cool. "Arduino" is a trademark of Arduino LLC and should not be used for unofficial variants. If you're interested in having your design included in the official Arduino product line, please see the So you want to make an Arduino document and contact the Arduino team. While unofficial products should not have "Arduino" in their name, it's okay to describe your product in relation to the Arduino project and platform. Here are a few guidelines that explain which uses we consider reasonable.

Thanks to its simple and accessible user experience, Arduino has been used in thousands of different projects and applications. The Arduino software is easy-to-use for beginners, yet flexible enough for advanced users. It runs on Mac, Windows, and Linux. Teachers and students use it to build low cost scientific instruments, to prove chemistry and physics principles, or to get started with programming and robotics. Designers and architects build interactive prototypes, musici and artists use it for installations and to experiment with new musical instruments. Makers, of course, use it to build many of the projects exhibited at the Maker Faire, for example. Arduino is a key tool to learn new things. Anyone - children, hobbyists, artists, programmers - can start tinkering just following the step by step instructions of a kit, or sharing ideas online with other members of the Arduino community.

There are many other microcontrollers and microcontroller platforms available for physical computing. Parallax Basic Stamp, Netmedia's BX-24, Phidgets, MIT's Handyboard, and many others offer similar functionality. All of these tools take the messy details of microcontroller programming and wrap it up in an easy-to-use package. Arduino also simplifies the process of working with microcontrollers, but it offers some advantage for teachers, students, and interested amateurs over other systems:

  • Inexpensive - Arduino boards are relatively inexpensive compared to other microcontroller platforms. The least expensive version of the Arduino module can be assembled by hand, and even the pre-assembled Arduino modules cost less than $50
  • Cross-platform - The Arduino Software (IDE) runs on Windows, Macintosh OSX, and Linux operating systems. Most microcontroller systems are limited to Windows.
  • Simple, clear programming environment - The Arduino Software (IDE) is easy-to-use for beginners, yet flexible enough for advanced users to take advantage of as well. For teachers, it's conveniently based on the Processing programming environment, so students learning to program in that environment will be familiar with how the Arduino IDE works.
  • Open source and extensible software - The Arduino software is published as open source tools, available for extension by experienced programmers. The language can be expanded through C++ libraries, and people wanting to understand the technical details can make the leap from Arduino to the AVR C programming language on which it's based. Similarly, you can add AVR-C code directly into your Arduino programs if you want to.
  • Open source and extensible hardware - The pl of the Arduino boards are published under a Creative Commons license, so experienced circuit designers can make their own version of the module, extending it and improving it. Even relatively inexperienced users can build the breadboard version of the module in order to understand how it works and save money.

There is no custom Arduino language, Arduino is the name of the project here: Arduino.cc.

The compiler used by the IDE is called avr-gcc and it is a C++ compiler. The languages listed below are compatible with avr-gcc and can be used to program your sketches in the IDE.

  • C
  • C++
  • Inline ASM

The IDE has access to a large API for use with your Arduino development boards. The source code is freely available for you to extract and modify as you wish. The API also sits on top of a robust and industry standard framework for manipulating the CPU directly. So when you need more performance from your device you can leave parts of the Arduino API out directly control the hardware. An example is port manipulation over Arduinos digitalRead/Write functionality.

Arduino is now FCC certified! That me that the board by itself passes FCC certification for electromagnetic emissions. It does not mean that your project is FCC certified. The moment you change the Arduino, it's no longer FCC certified (although we'd like some back-up documentation on this).

It is possible to compile programs for the Arduino using other build tools (e.g. Makefiles and/or AVR Studio). You'll need to configure these to link against the appropriate files in the Arduino core libraries.

Technically you can. However, in practice the board did not make it through FCC certification with one crystal (long traces with fast squarewaves = lots of noise).

The IDE has been known to cause errors with certain uses of #ifdef.

The short wer is: yes. The long wer is that most things that people are doing with Arduino do not rely on 20ppm precision timing where 100ppm would fail. For people who want long term precise timekeeping we suggest going with a TCXO (temperature compensation crystal oscillator) - but you would know if you needed that.