\chapter{Introduction}
\thispagestyle{empty}
\label{sec:intro}
Microcontrollers are the foundation for a modern, manufacturing-based
economy. One cannot fulfill the dreams of one's citizens without a
thriving manufacturing sector. As it is open source, \arduino\ is of
particular interest to hobbyists, students, small and medium scale
manufacturers, and people from developing countries, in particular.

Scilab is a state-of-the-art computing software. It is also open source. As a result, this is also extremely useful to the groups
mentioned above. If the French National Space Agency CNES can
extensively use Scilab \cite{CNES-Scilab}, why can't others rely on
it? If many of India's satellites can be placed in their precise
orbits by the Ariane rockets launched by CNES through Scilab
calculations, why can't others use Scilab?

The above argument can be extended to other open source software
systems Python, Julia, and OpenModelica. Python is a versatile
programming language with a high degree of expressiveness, which
allows code written in it to be small. Python is also the preferred
language in emerging areas, such as machine learning. Julia is also
highly expressive, just as Scilab and Python. The only difference is
that Julia is generally faster to execute, compared to Scilab and
Python.

OpenModelica implements the Modelica language. It is especially
created for modeling. It is an object-oriented programming language,
especially when it comes to modeling. It has a GUI that lends itself
to connecting different building blocks to create models. Models in
OpenModelica are solved by collecting equations from different
building blocks and solving them simultaneously.

Xcos is a GUI based system building tool for Scilab, somewhat similar
to
Simulink$^{\text{\textregistered}}$\footnote{Simulink$^{\text{\textregistered}}$
  is a registered trademark of MathWorks, Inc.}. Through Xcos, it is
possible to build interconnected systems graphically. Xcos also is an
open source software tool.

Although Scilab, Xcos, Python, Julia, and OpenModelica are powerful and
free, there has not been much literature that teaches how to use them
to program the versatile \arduino. To address this gap, we have
written this series of books. We have provided code written in all of
these open source software. The reader is recommended to go through
the book that covers a particular software.

The only way we can become versatile in hardware is through hands-on
training. To this end, we make use of the easily available low-cost
\arduino\ board to introduce the reader to computer interfacing. We
also make available the details of a Shield that makes the
\arduino\ use extremely easy and intuitive. We tell the user how to
install the firmware to make the \arduino\ board communicate with the
computer. We explain how to control the peripherals on the
\arduino\ board with user-developed software.

The Scilab-Arduino toolbox is already available for Windows
\cite{scilab-arduino}. We have suitably modified it so that it works
on Linux also. We give the required programs to experiment with the
sensors and actuators that come with the Shield, a DC motor, and a
servomotor. These programs are available for all of the following
environments: Arduino IDE, Scilab, Xcos, Python, Julia, and
OpenModelica. In addition to these toolboxes, we provide the firmware
for each software and a program to check its working.

This book teaches how to access the following sensors and actuators:
LED, pushbutton, LDR, Potentiometer, Thermistor, Servo motor, and DC motor. A set of two to five programs are given for each. These are given for all the
software mentioned above. The reader has to see the book devoted to
the appropriate software. We also explain where to find these
programs and how to execute them for each experiment.

This book is written for self-learners and hobbyists. It has been
field-tested by 250 people who attended a hands-on workshop conducted
at IIT Bombay in July 2015. It has also been field-tested by 25
people who participated in a TEQIP course held in Amravati in November
2015.

All the code described in this book is available at
\url{https://floss-arduino.fossee.in/downloads}.  On
downloading and unzipping it, it will open a folder {\tt Origin} in
the current directory.  All the files mentioned in this book are
with reference to this folder\footnote{\label{fn:file-loc}This naming
  convention will be used throughout this book.  Users are expected to
  download this file and use it while reading this book.}.
