It’s been too long since I posted something …
History of Arduino
Born in Italy in the year 2005 at the Ivrea Interaction Design Institute, Arduino, a board based on open source microcontroller, was designed for the purpose of fast prototyping. It was designed for students without any background in electronics or programming. Arduino’s name originated from a famous King in Northern Italy named King Adruin who ruled the country for two years and was later dethroned by King Henry II. Massimo Banzi, one of Arduino’s major contributors, had frequented a pub named ‘Bar Di Re Arduino’ that was built in memoir of King Arduin, and Banzi later gave the microcontroller board the name ‘Arduino’. Arduino’s major contributors are Massimo Banzi, David Cuartielles, Tom Igoe, Giancula Martinom and David Mellis. Hernando Barragan, one of Banzi’s students, had also created a thesis called “Arduino – The Revolution of Open Hardware” that would give Arduino a spot in the field of electronics.
With a strong belief in open-source software and no funding, Banzi and his team decided to make Arduino an open source model using a license from Creative Commons. The team created a blue board that included a map of Italy on the back. They also made he decision to make it a plug and play board that could easily be taken out of the box and used right away. The board was tested on the students at the Ivrea Interaction Design Institute with simple instructions to use the board to create their own project, later after this many people began to know about the board. After Banzi’s friend had made the first purchase of the board, a name was given to the board, and it was so that Arduino, the open source microcontroller began to rapidly spread online.
Thus the Arduino language is used in vast amounts of projects. The language itself is merely a set of C/C++ function that are called within the written code, with additional extra libraries for the embedded systems. It undergoes through some automatic changes such as automatic generation of function prototypes and then it is passed directly to a C/C++ compiler, as such all standard C and C++ constructs should work in the language.
Programming Domain
The Arduino-board is operated using Arduino-Software, it additionally supports languagelibraries such as C/C++ and Java. The software/hardware combination is catered to inventors and application programmers and is intended to be so easy to use it also appeals to first time programmers. Arduino has been used by students, programmers and makers alike for:
Systems Design
General Purpose Applications
Hardware Communication
Software Prototyping
Programming Education
Some interesting real-world examples includes: The MakerBot 3-D printer, robotic arm sign language translator created at the University of Antwerp, an electro magnet and a levitation device that came as a result of simple do it yourself projects. More recently expert programmers have been using Arduino to test scientific applications that involve Artificial Intelligence such as the Al-Duino AI robot, and other scenario based algorithms that work to provide the best solution to a problem.
In all it touches various domains due to its diversity and nature of the language. The core lies in systems programming, but it is now extending and ranging to domains such as scientific applications, and now beginning to touch some areas of artificial intelligence.
Evaluation & Implementation
The readability and easiness of Arduino has caused an exponential growth of community. However, like any other language there are the pro’s and con’s to it.
Advantages:
The Arduino language has a lot of abstraction built in, especially in the hardware interfaces, which makes it very simple to use.
The language does some pre-processing to help newcomers to the language avoid a couple of ‘gotcha’s, by filling in some #includes.
Due to the fact that the Arduino language is merely a set of C/C++ functions that can be called from your code, it means that there is a handful amount of well documented resource hubs that can help programmers who already understand those languages.
There are various features that the libraries add such as functions you can call to control the hardware. If you didn’t have those functions, you’d need to fiddle directly with special registers to control everything. That’s how embedded programming is usually done.
Next, since the code that is being written sits at the fundamentals of C/C++ at its core with some extra libraries on top makes it really extra convenient. Additionally, if the libraries are not so useful or inconvenient, then you just don’t have to use them at all; it’s that simple.
Disadvantages:
Microcontroller startup programmers don’t necessarily know that it’s actually C/C++ under the basic fundamentals, and so sometimes don’t learn about the basic concepts most introductory requirements, “Function Declarations”. When the programmers wants to include outside code, the person will need to learn about #include statements anyway, so hiding #include “Arduino.h” is inconsistent and sets up future confusion. In short, these persons are blinded from a couple of helpful learning opportunities, just to avoid some boilerplate that’s templated out anyway.
Arduino, has no automatic garbage collection, you have to explicitly manage your own memory.
The Arduino also uses 8-bit instructions instead of the 32 bit ones a computer uses. This will mainly affect the amount of information you can store in a variable.
Bad abstractions and naming conventions. It uses a lot of predefined functions to use peripherals of the Arduino. A lot of these functions use misguiding names or use bad abstractions, simply not describing what they’re doing. Good hardware abstraction saves the end user from fiddling a lot, bad hardware abstraction confuses.
Horrible documentation on the additional libraries. The documentation on the functions tells nothing about which peripherals are used, not even on a deeper level, hidden away from normal users.
Programming Environment
Arduino IDE (Integrated Development Environment). The Arduino Software (IDE) is a cross-platform application written in the programming language Java that runs on Windows, Macintosh OSX, and Linux operating systems. A program written with the IDE for Arduino is called a sketch. Sketches are saved on the development computer as text files with the file extension ‘.ino’. The Arduino software is published as open source tools, available for extension by experienced programmers, this is done by including C++ and Java libraries when writing a project or in Arduino’s case a sketch. Since the first version of Arduino Software the two functions needed to communicate with the Arduino board are setup() and loop(). The functions run under the default function main which consists of the entire interface of the project in development. These functions come prepackaged in the default C library of the IDE..
setup(): This function is called once when a sketch starts after power-up or reset. It is used to initialize variables, input and output pin modes, and other libraries needed in the sketch.
loop(): After setup() has been called, function loop() is executed repeatedly in the main program. It controls the board until the board is powered off or is reset.
Arduino also provides an environment exclusively cloud based for users with reliable internet connections. It is called the Arduino Web Editor it has all the features of the Arduino Software (IDE) but with extra conveniences such as pre-installed updates and cloud storage. The Arduino Software (IDE) also allows user generated libraries from its community to be published for download. The most recent release of Arduino Software id version 1.8.4
References
Arduino. (n.d.). What is Arduino. Retrieved fromhttps://www.arduino.cc/en/Guide/Introduction
Alduino. (n.d). Al-Duino. Artifical Intelligence robot with Arduino. Retrieved fromhttp://aiduino.weebly.com/
Arduino Stack Exchange. (2014). C++ vs The Arduino Language. Retrieved fromhttps://arduino.stackexchange.com/questions/816/c-vs-the-arduino-language
Curicuits Today. (2014). Invention Story and History Development of Arduino. Retrievedfrom http://www.circuitstoday.com/story-and-history-of-development-of-arduino
Klarmann, A. (2017). 4 DIY Arduino 3D printers you can build yourself. Retrieved fromhttps://all3dp.com/arduino-3d-printer/
Nichols, G. (2017). Arduino Powered and 3D Printed, this robot translates to sign language. Retrieved from http://www.zdnet.com/article/arduino-powered-and-3d-printed-this-robot-translates-to-sign-language/
Van De Dam, H. (2013). Why Arduino is not the right educational tools. Retrieved from http://www.hackvandedam.nl/blog/?p=762
Williams, E. (2015). Embed with Elliot: There is no Arduino Language. Retrieved from https://hackaday.com/2015/07/28/embed-with-elliot-there-is-no-arduino-language/