Arduino is part of physical programming, meaning that the programming we do will have interaction with the physical world. A clear example of this is to move motors, open doors, turn on spotlights, make LED sequences and use different types of sensors (Infrared, humidity, gas, ultrasound, etc ...).
Basically it was designed as an educational tool to be able to program the ATmega microcontroller, in this case the Atmega 328P-PU that belongs to the arduino uno.
Arduino is part of what we know as collective intelligence, which is achieved through the internet through the development of open source and open hardware, that is, all the hardware and software documentation of the card is released to the public so that anyone can develop, improve or extend it, including its development platform (Arduino IDE).
Initially it was born as a degree project of a Colombian student (Hernando Barragán), who developed his board called "Wiring", then what a group of Italian professors did was take the board and reduce production costs and put it the name of "Arduino".
The development environment is based on the programming language Processing, which was initially developed by the MIT university. Processing is based on C++, so when programming Arduino cards for those who know C++ it is easier to do it since it has many programming facilities.
As it is open hardware you can get the electrical plans so that you can make your own board or make modifications and can even download the printed circuits (PCB) and finally in the same way, you can download the development environment by accessing to the Arduino page here.
Another advantage is that it is multiplatform, so the development environment can be used in Windows, Mac, Linux and you can even obtain the source code of it and adapt it to your needs.
In general, Arduino has really great advantages when we want to develop something because the great Arduino community shares its own programs for us to use by taking and changing them to our liking or using them as needed in our projects.
The development environment contains examples of very basic codes, such as turning on and off a led or fade.
The software is completely free so that each time the development team makes a change in it they deliver it as an update so it is not necessary to buy updates.
Finally, another of the advantages that Arduino has, is that "Shields" already exist and are being developed to obtain some improvements, an example of them are the GSM shields that allow us to connect the Arduino to the cell phone network, the bluetooth modules that Allow to send and receive data, etc ...
Currently there are several types of arduino, some designed for general purposes and others for specific applications such as game development. In another post we will see its characteristics as well as which one to choose according to our needs.
You can access the post here.