Många av er är säkert redan bekanta med Arduino, men för den oinvigde följer här en liten introduktion!

Arduino Uno R3

Hårdvara

Arduino är, enkelt uttryckt, en dator. Om än en väldigt simpel sådan. Den har inget direkt operativsystem, går ej att ansluta till en skärm (om man inte absolut vill), och drivs antingen via USB-port eller en batterieliminator på 6-20V. Det går också att ansluta ett batteri till de små portarna märka Vin och GND under “Power”. Mer än 7V rekommenderas om man använder något annat än USB-anslutningen för strömtillförsel, för att säkerställa att 5V-utgångarna håller sig över 5V.

Den har, precis som Raspberry Pi:s GPIO-port, 3.3V, 5V och GND och ett antal digitala portar (Arduino Uno, ovan, har 14 sådana numrerade 0-13). Arduinon har däremot också 6 stycken analoga portar (numrerade A0-A5). Dessa samlar in värden mellan GND-5V och har 10-bits upplösning vilket innebär att den fördelar denna ström över 1024 olika värden.

Ingen klocka finns inbyggd, men däremot finns en räknare som räknar antalet millisekunder sen enheten startades. Lagringskapaciteten är dock begränsad, så denna räknare nollställs efter ungefär 50 dagar på grund av att talet blir för stort.

“Hjärnan” i underverket är en Atmel Atmega 328P, en så kallad mikrokontroller. Det är det stora, avlånga chippet på bilden ovan. Om man vet hur man ansluter den kan man köra Atmegan utan övriga komponenter, men det som är praktiskt med Arduino och som gjort den så omåttligt populär är just att den tillför enkelhet till konceptet och gör det lätt att utöka funktionaliteten med s.k. “Shields”.

Arduinon har väldigt begränsat lagringsutrymme för att lagra program, ynka 32 kB, men för det mesta räcker detta utrymme gott och väl då programmen brukar vara relativt simpla.

En annan viktig detalj är att Arduinon är “open source”, så det finns en uppsjö varianter och kopior i olika format och storlekar som alla fungerar med mjukvaran.

Shields

En av de stora fördelarna med Arduino är utbyggbarheten. Dess ingångar är snyggt uppradade längs kanten av kretskortet, vilket gör att man kan sätta utbyggnadsmoduler ovanpå. Här är ett exempel på en sådan:

Arduino Ethernet Shield

Detta är en “Ethernet-shield”, som lägger till en nätverksport till Arduinon. Som synes har även denna snyggt uppradade portar, så det går bra att bygga uppåt med fler shields vid behov.

Att använda en shield innebär ofta att man behöver importera (och i vissa fall, först ladda ner) kodbibliotek för denna. Några finns dock inbyggda i Arduino IDE, utvecklingsmiljön, som vi ska gå igenom nu.

Utvecklingsmiljö och programmeringsspråk

Den utvecklingsmiljö som är tänkt för Arduino är Arduino IDE (Integrated Development Envorinment), och den går enkelt att ladda ner och installera från Arduinos hemsida.

Arduino IDE med Blink-sketch

Denna är relativt enkel vad gäller färgkodning med mera, men det finns många exempel att provköra om man vill lära sig. Ett sparat Arduino-program har filändelsen “.ino” och kallas “sketch”.

Programmeringsspråket påminner mycket om C, även om det är en väldigt enkel variant av detta. När man skrivit en sketch och vill köra den på Arduinon kompileras först koden, vartefter den laddas upp i Arduinons minne. Därefter körs koden automatiskt varje gång Arduinon startas tills det att man laddar upp en ny sketch, som då ersätter den gamla!

När man kodar för Arduino finns huvudsakligen två “faser” som körs i koden. Det första är setup(), som är uppstartsfasen då alla förberedelser kan göras och som bara körs en gång. Därefter kommer man in i loop() som fortsätter loopa i all evinnerlighet. loop() fungerar precis som vilken loop som helst, men den har inget slutvillkor. Innan koden går in i setup() kan man såklart definiera variabler och sätta dessa till värden, om man vill.

Arduinons portar kan, precis som på Raspberry Pi, ställas in input- eller output-läge med kommandot pinMode().

Ett väldigt enkelt Arduino-program är detta exempel som blinkar en LED-lampa. På Digital-pin 13 finns en inbyggd LED, vilket kan vara praktiskt ibland. Därmed behöver man inget annat än en Arduino för att testa denna sketch!

För ett exempel på Arduino-kod som är lite mer avancerad, se detta tidigare inlägg där vi bygger en relä-kontroller som hämtar indata från två 1wire-temperatursensorer. Där finns också exempel på hur man kan skapa låtsastrådar för att göra olika saker med olika tidsintervall.

Det var bara en kort introduktion av vad Arduino är och hur den fungerar! Vi kommer lägga upp mer innehåll relaterat till den framöver.