Subscribe to RSS  |  Advertise on this Blog

  • HOME
  • ABOUT
    • RESUME
Alberto Matus
  • SERVICES
  • CONTACT
  • HOME
  • ABOUT
    • RESUME
  • SERVICES
  • CONTACT
September 29, 2017  |  By ajMatus In Technology

Arduino Programming Language

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/

Arduino Programming Language

Article by ajMatus

Leave your comment Cancel Reply

(will not be shared)

WELCOME

Hello, and welcome! I'm Alberto - a Cyber Security & Digital Forensics professional specializing in Digital forensics, Incident Response & Vulnerability Assessment. I hold a Master's degree in Cybersecurity with a concentration in Digital Forensics from the University of South Florida and a Bachelor degree in Information Technology from the University of Belize. Through this blog I hope to share tips, information about cybersecurity, cybercrime, digital forensics, open source technologies, business, and a bit of my amazing country. For those interested in any of my services please feel free to contact me using any of the associated contact details on this blog.

SEARCH

ARCHIVE

  • October 2022 (1)
  • July 2021 (2)
  • November 2020 (2)
  • October 2020 (1)
  • September 2020 (2)
  • August 2020 (2)
  • July 2020 (6)
  • June 2020 (6)
  • April 2020 (5)
  • February 2020 (1)
  • November 2019 (2)
  • October 2019 (1)
  • September 2019 (1)
  • June 2019 (1)
  • May 2019 (1)
  • November 2018 (6)
  • September 2018 (3)
  • August 2018 (4)
  • February 2018 (1)
  • January 2018 (3)
  • December 2017 (1)
  • October 2017 (5)
  • September 2017 (1)
  • December 2016 (2)
  • November 2016 (4)
  • October 2016 (1)
  • September 2016 (2)
  • August 2016 (5)
  • July 2016 (2)
  • June 2016 (2)

CALENDAR

March 2023
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
2728293031  
« Oct    

RECENT POSTS

  • Capture
    WordPress Empty template: Index Friday, 7, Oct
  • Belize – Benque Viejo to San Ignacio Town Drive Tuesday, 6, Jul
  • alberto-matus-digital-piracy
    An Overview of Digital Piracy Thursday, 1, Jul

REMOTE WORK

Remote work is my preferred way or working as I have a home office set up where all the magic happens. This method allows me to work with businesses, organizations, and all brands across the globe. I can manage projects via my own management applications or your own internal project management app. Any calls and meetings can be done through whatever tools fits your business, and I’m flexible to work on your time zone.

ON-SITE

Not every job assignment can be done via remote working methods, and so if it requires me to be on-site for the duration of the work then this can be done based on agreements or contractual work. I prefer doing these types of consultancies or hands-on types of work on the weekends but I am flexible enough depending on the terms. I am also open to traveling outside of Belize. All further afield work requires accommodation and travel expenses.

RETAINER

Sometimes clients are looking for long term partners that share a closer connection to their visions and goals. As such I am open to retainers. A retainer hires me for a certain amount of hours per month at a discounted rate. These discounted rates are usually between 10%-20% off depending on the contractual agreements.

Alberto - open source | technology | belize -Matus

Copyright ©2020. All Rights Reserved

en_USEnglish
en_USEnglish