Third party cookies may be stored when visiting this site. Please see the cookie information.

PenguinTutor YouTube Channel

Arduino - reference

This is the reference guide see the Getting started with Arduino tutorial for details of how to use the Arduino.

Arduino The Arduino is like an electronic hobbyists dream come true. A low cost microprocessor based circuit that can run from USB or an external supply, it is open source and works with Linux. The official description is as follows:

Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.

Basically it allows you to create electronic circuits that can be either standalone (once the sketch is downloaded), or can communicate with a PC to act as an interface between the PC and the physical world.

The Arduino can be programmed using the Arduino Programming Language, which is based around C/C++. By using this the arduino board can be programmed as a standalone computer (all be it a very basic one with limited interfaces).

There are serveral versions of the Arduino available. Different Arduino boards can use different form factors, voltages and different architectures.

Classic format Arduino

I refer to these as the "classic format". These are ones that follow the traditional format, run at 5V (on the processor) and fit the original Arduino Shields.

The most popular in the classic format is the Arduino Uno. The current Arduino Uno has a ATmega328 processor; whereas the earlier versions of the Arduino used an ATmega168 processor. The other versions are for more specialist needs, such as the Arduino Mega (more ports available), the Lilypad (suitable for sewing into clothing) or smaller versions using SMD components. Unless otherwise stated all further references are to the standard version.

The standard Arduino has 14 digital pins. Some of which have additional functions:

  • Serial ports: Pin 0 and 1 are the Rx and Tx ports used for receiving and transmitting serial data.
  • External Interrupts: Pin 2 and 3 can be configured to trigger an interrupt on a low value, rising or falling edge, or a change in value.
  • PWM: Pins 3, 5, 6, 9, 10 and 11 can be used as 8bit PWM outputs effectively providing an analog output.
  • LED: Pin 13 has a built-in LED on the board which lights when the output is high.

There are also 6 analog inputs each with 10 bits of resolution (0 to 1023).

Electrical characteristics of the Arduino UNO

The Arduino data sheets give some of the information on the characteristics but for the full details you need to look at the datasheet relating to the AVR microprocessor used. The microprocessor depends upon the model of the Arduino, although except for the Leonardo most are based on (or compatible with) the ATmel ATmega328. I've put some of the key points based on a typical 5v Arduino in the table below, but if you need accurate information you should check the datasheets.

Recommended input voltage 7 to 12v
Internal voltage (Vcc) 5v
Digital input low voltage -0.5v to 0.3Vcc
-0.5v to 1.5v
Digital input high voltage 0.6Vcc to Vcc+0.5v
3v to 5.5v
Digital output low voltage Max 0.9v
(at 20mA)
Digital output high voltage Min 4.2v
(at 20mA)
DC current per pin 40mA
Total current for block of pins
(eg. half of digital outputs)
150mA 1

1 See datasheet for actual pin details
Also varies depending upon function (eg. SPI specification differs from above)

MKR Series Arduino

The newer MKR series Arduinos have a smaller form factor and run at a lower voltage of 3.3V. These are electrically compatible with other 3.3V microcontrollers (such as the Raspberry Pi Pico) and the Raspberry Pi System-On-Chip computer.

Create your own custom Arduino

You can also create your own Arduino Like Circuits if you have a custom requirement. See the following guides for more details.

Practical examples

The Arduino is used in the following projects:

Previous Electromechanical components
Electromechanical components
Next Raspberry Pi GPIO
Raspberry Pi GPIO