Az Arduino Massimo Banzi és más alapítók alkotása. Ez egy olcsó mikrovezérlős kártya (board), ami még a kezdők számára is lehetőséget biztosít bonyolult és összetett elektronikai szerkezetek megvalósítására. Az Arduinót hozzá lehet kapcsolni mindenféle égőhöz, motorhoz, szenzorhoz és egyéb eszközökhöz. A programozási nyelve rendkívül könnyen tanulható. Arduinót használva építhető interaktív kijelző, mozgó robot, hangszervezérlő klaviatúra vagy bármi más, amit el lehet képzelni.
Az Arduino IDE egy kereszt-platformos Java nyelven írt fejlesztőkörnyezet, amely segítségével Arduino programokat készíthetünk, tesztelhetünk, majd az Arduino Board-okra tölthetjük. Az induláshoz a fejlesztőeszköz több mintaprogramot tartalmaz, amelyek segítségével egyszerűen megtanulhatjuk, hogyan tudunk LED-eket villogtatni, fényerőt szabályozni, vagy a számítógéppel kommunikálni USB-n keresztül. Az Arduino programokat egy C/C++ alapú programozási nyelven írhatjuk, így az ezeket a nyelveket ismerők könnyen kiismerhetik magukat a környezetben. Az IDE-hez tartozik a "Wiring" nevezetű C/C++ programkönyvtár, amellyel egyszerűen végezhetjük el a leggyakoribb input/output műveleteket.
A nyelv a C nyelvből ered, attól kevés dologban különbözik. Az alábbiakban főként ezeket az eltéréseket részletezzük.
A programok három fő részre bonthatóak: struktúra (vezérlési szerkezetek), értékek (változók és konstansok) és függvények.
A C nyelvvel azonosak az if, for, switch, do ... while, break, continue, return parancsok. Arduinoban használható a goto is.
A kommentek, a #define és a #include is a C-vel azonosak.
A C-vel azonosan használható:
A legtöbb adattípus megegyezik a C-belivel:
A következő program egy egyszerű Arduino program, amely egy csatlakoztatott LED-et kapcsol be és ki csatlakoztatott nyomógomb segítségével.
/*
* Nyomogomb
*/
int ledPin = 9; // LED Pin9-re kötve
int inputPin = 2; // nyomógomb Pin 2-re kötve
int val = 0; // a nyomógomb állapotát tároló változó
void setup()
{
pinMode(ledPin, OUTPUT); // a LED-hez tartozó láb kimenet
pinMode(inputPin, INPUT); // a nyomógombhoz tartozó láb bemenet
digitalWrite(ledPin, LOW); // LED kikapcsolása
}
void loop()
{
val = digitalRead(inputPin); // nyomógomb állapotának lekérdezese
if (val == HIGH) // ha a nyomógomb nincs lenyomva
{
digitalWrite(ledPin, HIGH); // LED bekapcsolása
}
else // különben
{
digitalWrite(ledPin, LOW); // LED kikapcsolása
}
}