Arduino IDE: od programa do mikrokontrolera
Kako instalirati Arduino IDE, odabrati pločicu i port, učitati program na Arduino, koristiti serijski monitor i biblioteke te riješiti česte greške.

Što je Arduino IDE?
Arduino IDE je besplatan program u kojem pišemo programe za Arduino i šaljemo ih na pločicu. Kratica IDE znači integrirano razvojno okruženje (engleski Integrated Development Environment): u jednom programu je sve što za to treba:
- uređivač, u kojem pišemo program,
- prevoditelj (compiler), koji program pretvara u naredbe koje mikrokontroler razumije,
- učitavanje programa na pločicu preko USB kabela,
- serijski monitor i serial plotter, u kojima vidimo što pločica javlja,
- biblioteke i primjeri, gotovi programi za module i senzore.
Ova stranica je za Arduino radionicu, na kojoj s Arduino IDE-om počinjemo, kao što piše u lekciji Arduino, elektronika i izrada vlastitih uređaja. Opisuje Arduino IDE 2 (verziju 2.3). Izgled se između verzija malo mijenja, pa izbornike opisujemo riječima, a na slikama su pojednostavljeni.
Od programa do mikrokontrolera
Što se događa kad program pošaljemo na Arduino, pokazuje slika:

- Program, na engleskom sketch, pišemo u Arduino IDE-u, u jeziku C++. Spremljen je u datoteci
.ino, u mapi istog imena. - Prevoditelj od programa napravi strojni kod: niz bajtova s naredbama koje mikrokontroler razumije. Na slici su zapisani heksadecimalno.
- USB kabel prenosi strojni kod na pločicu, a usput je i napaja.
- USB čip na pločici pretvara USB u serijsku vezu, UART, koju mikrokontroler razumije. Dok podaci putuju, trepću LED-ice RX i TX pokraj njega.
- Mikrokontroler ATmega328P u sebi ima mali program, bootloader (učitavač). On primi strojni kod i zapiše ga u svoju flash memoriju. Program u njoj ostaje i kad isključiš napajanje.
- Program se pokrene. U našem primjeru LED-ica L, spojena na pin 13, počne treptati.
Prevođenje traje nekoliko sekundi, a učitavanje još nekoliko.
Instalacija
- Arduino IDE preuzmi samo sa službene stranice, arduino.cc/en/software. Postoji za Windows, macOS i Linux. Programi s drugih stranica mogu biti zastarjeli ili zaraženi.
- Za Windows postoji i ZIP datoteka. Nju samo raspakiraš u neku mapu i pokreneš
Arduino IDE.exe, bez instalacije, što pomaže na školskim računalima. - Podrška za Arduino Uno (Arduino AVR Boards) dolazi s programom i postavi se sama pri prvom pokretanju. Ako u popisu pločica nema Una, otvori Upravitelj pločica (Boards Manager, ikona pločice na bočnoj traci), potraži AVR i klikni Install. Za to treba internet.
- Na Linuxu korisnik mora biti u grupi
dialout, inače ne smije koristiti port. Dodaje ga naredbasudo usermod -a -G dialout $USER, a promjena vrijedi nakon odjave i ponovne prijave.
Za voditelja: pripremi računala prije radionice
- Instaliraj Arduino IDE, podršku za Uno, biblioteke koje trebaju lekcije i upravljački program za USB čip na svako računalo, i na svakom učitaj probni program.
- Školska mreža može zaustaviti preuzimanje, a za upravljački program trebaju administratorska prava. Instalacijske datoteke drži i na USB sticku.
- Arduino ima i internetski uređivač (Arduino Cloud Editor), ali za njega treba korisnički račun. Na radionici koristimo program instaliran na računalu, bez računa.
Spajanje pločice
- Spoji Arduino USB kabelom. Kabel mora prenositi podatke: neki kabeli služe samo za punjenje, i s njima se pločica upali, ali je računalo ne vidi.
- Odaberi pločicu: Tools → Board → Arduino AVR Boards → Arduino UNO.
- Odaberi port: Tools → Port. Na Windowsu se port zove na primjer
COM3, na Linuxu/dev/ttyUSB0ili/dev/ttyACM0, a na macOS-u počinje s/dev/cu.. Ako ne znaš koji je tvoj, pogledaj popis, odspoji pločicu i pogledaj ga ponovno: nestao je baš tvoj port.
Pločicu i port možeš odabrati i u padajućem izborniku na alatnoj traci: klikni Select other board and port, u polje Boards upiši uno, odaberi Arduino UNO, desno odaberi port i klikni OK. Ako odabereš samo pločicu, program možeš prevesti, ali ne i učitati.

Na radionici koristimo pločice koje nisu originalne (klonove). Na mnogima je USB čip CH340, koji Arduino IDE ne prepoznaje po imenu, pa uz port ne piše Arduino UNO. Pločicu tada odaberi sam. Windows 10 i 11 i novije verzije macOS-a obično same imaju upravljački program za CH340. Ako se port ipak ne pojavi ni s ispravnim kabelom, upravljački program treba instalirati sa stranice proizvođača čipa, tvrtke WCH.
Prozor Arduino IDE-a

- Provjeri (Verify, kvačica, Ctrl+R): prevede program i javi greške, ali ga ne šalje na pločicu.
- Učitaj (Upload, strelica, Ctrl+U): prevede program i pošalje ga na pločicu. Siva tipka pokraj nje (Debug) ne radi s Unom.
- Pločica i port, isto što i u izborniku Tools.
- Serial Plotter: crta brojeve koje program šalje. Otvara se i u izborniku Tools → Serial Plotter.
- Serijski monitor (Serial Monitor, Ctrl+Shift+M): prikazuje poruke s pločice. Otvara se i u izborniku Tools → Serial Monitor, a prikazuje na dnu prozora, umjesto izlaza.
- Bočna traka, odozgo prema dolje:
- Sketchbook (mapa): popis tvojih spremljenih programa. Klikom na ime program se otvori.
- Upravitelj pločica (Boards Manager, pločica): instalira i nadograđuje podršku za pločice, na primjer Arduino AVR Boards za Uno.
- Upravitelj biblioteka (Library Manager, knjige): pretražuje, instalira i nadograđuje biblioteke, kao u odjeljku Biblioteke.
- Otklanjanje grešaka (Debug): izvodi program korak po korak, ali samo na pločicama koje to podržavaju. Uno to ne podržava.
- Pretraživanje (Search, povećalo): traži riječ u svim datotekama otvorenog programa i, ako želiš, zamjenjuje je drugom.
- Uređivač: ovdje pišeš program. Brojevi lijevo su brojevi redaka. Tools → Auto Format (Ctrl+T) uredno poravna uvlake.
- Izlaz (Output): poruke prevoditelja, na primjer koliko memorije program zauzima, i greške.
- Statusna traka: redak u kojem si i odabrana pločica s portom.
Prvi program
Gotovi primjeri su u izborniku File → Examples. Najpoznatiji je 01.Basics → Blink, koji pali i gasi LED-icu L na pločici. Naša inačica uz to javlja što radi:
// Pali i gasi LED-icu L na pločici i javlja što radi
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // LED-ica L, spojena na pin 13
Serial.begin(9600); // brzina mora biti ista kao u serijskom monitoru
Serial.println("Pokrenuto!");
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("svijetli");
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
Serial.println("ne svijetli");
delay(1000);
}
- Klikni Provjeri. U izlazu piše koliko program zauzima: oko 2000 bajtova od 32 256 koliko ima Uno.
- Klikni Učitaj. Dok se program šalje, trepću LED-ice RX i TX, a na kraju u izlazu piše Done uploading.
- LED-ica L sada svijetli jednu sekundu, pa jednu sekundu ne svijetli.
- Otvori serijski monitor i odaberi brzinu 9600 baud. Ispisuju se poruke svijetli i ne svijetli.
Serijski monitor
Serijski monitor prikazuje sve što program pošalje naredbama Serial.print() i Serial.println(). Druga na kraju poruke prijeđe u novi red. Tako najlakše vidimo što program radi i koje vrijednosti čita, na primjer svjetlo na LDR-u u lekciji Arduino - korak po korak.

- Brzina mora biti ista. Broj u
Serial.begin(9600)i brzina odabrana u serijskom monitoru moraju biti jednaki. Ako nisu, umjesto poruka vidiš čudne znakove. - Port koristi samo jedan program. Ako je serijski monitor otvoren u nekom drugom programu, Arduino IDE ne može učitati program na pločicu.
- Pinovi 0 i 1 zauzeti su. Preko njih ide serijska veza prema USB čipu. Ako je na njih nešto spojeno, učitavanje može ne uspjeti, a u monitoru se pojave pogrešni znakovi.
- U polje na vrhu serijskog monitora možeš upisati poruku i poslati je pločici. Program je čita naredbom
Serial.read().
Serial Plotter
Serial Plotter od brojeva koje program šalje crta graf, pa se promjene vide mnogo bolje nego u stupcu brojeva. Otvara se u svojem prozoru, a brzina mora biti ista kao u programu:
// Šalje napon na A0 u Serial Plotter (od 0 do 1023)
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(A0));
delay(20);
}
Spoji potenciometar: krajnje izvode na 5 V i GND, a klizač na A0. Kad okrećeš gumb, crta se diže i spušta između 0 i 1023. Ako na A0 nije ništa spojeno, crta skače bez reda, jer nespojeni ulaz ne čita 0 (zabluda 10). Više vrijednosti odjednom crtaš tako da ih ispišeš u istom retku, odvojene zarezom ili razmakom, a na kraju prijeđeš u novi red.

Biblioteke
Biblioteka je gotov kod za neki modul, na primjer zaslon, sat ili senzor, pa ga ne moramo pisati sami. Instaliramo je u Upravitelju biblioteka (Library Manager, ikona knjiga na bočnoj traci): potražimo ime biblioteke koje navodi lekcija ili proizvođač modula i kliknemo Install. U program je uključujemo naredbom #include na vrhu, na primjer #include <Wire.h> za vezu I2C. Uz većinu biblioteka dolaze i primjeri, u izborniku File → Examples.
Kad nešto ne radi
Greške pri prevođenju
Kad program ima grešku, prevoditelj ga ne prevede i u izlazu crvenim slovima javi što ga muči. Poruka počinje imenom datoteke, brojem retka i stupca. Uvijek prvo čitaj prvu grešku, jer su ostale često samo njezina posljedica.

; na kraju retka 14, iza delay(1000). Prevoditelj to primijeti tek kad dođe do } u retku 15, pa javlja :15:1:, redak 15 i stupac 1. Tipka Copy error messages kopira sve poruke, pa ih možeš poslati voditelju ili na Discord.| Poruka | Što znači |
|---|---|
error: expected ';' before '}' token | Nedostaje ;. Prevoditelj to primijeti tek u sljedećem retku, pa je greška na kraju retka prije onoga koji javlja. |
error: 'digitalwrite' was not declared in this scope | Prevoditelj ne poznaje tu riječ. C++ razlikuje velika i mala slova: ispravno je digitalWrite. Prevoditelj ga i sam predloži (suggested alternative). |
error: expected '}' at end of input | Neka vitičasta zagrada nije zatvorena. Pomaže Auto Format: blok koji nije zatvoren ostane krivo uvučen. |
Greške pri učitavanju
| Što vidiš | Najčešći uzrok | Što učiniti |
|---|---|---|
| Port se ne pojavljuje | kabel samo za punjenje ili nedostaje upravljački program | probaj drugi kabel, pa upravljački program za CH340 |
avrdude: stk500_recv(): programmer is not responding | odabrana je pogrešna pločica ili port, ili je nešto spojeno na pinove 0 i 1 | provjeri pločicu i port, odspoji pinove 0 i 1 i pokušaj ponovno |
Access is denied, Permission denied ili port busy | port koristi drugi program, a na Linuxu korisnik nije u grupi dialout | zatvori serijski monitor u drugom programu, na Linuxu dodaj korisnika u grupu |
| Učitavanje uspije, ali ništa se ne događa | pogrešan pin u programu ili greška u sklopu | ispiši u serijski monitor što program radi i provjeri sklop |
Spremanje programa
Arduino IDE sprema programe u mapu Sketchbook: na Windowsu i macOS-u je to mapa Arduino u Dokumentima, a na Linuxu ~/Arduino. Svaki program dobije svoju mapu s istim imenom kao datoteka .ino, i to tako mora ostati. Ime piši bez razmaka i bez slova č, ć, đ, š i ž, na primjer semafor_2. Ako u istoj mapi ima više datoteka .ino, Arduino IDE ih prikazuje kao kartice i prevodi zajedno, kao jedan program.
Arduino IDE ili Visual Studio Code?
Arduino IDE je najjednostavniji za početak i brzo isprobavanje. Kad projekti narastu, prelazimo na Visual Studio Code s dodatkom PlatformIO, koji bolje pomaže u organizaciji većih programa. O njemu piše stranica Arduino i Visual Studio Code.
Savjeti za traženje grešaka
Kad nešto ne radi, nemoj mijenjati sve odjednom. Kreni redom, od pločice prema programu, i nakon svake promjene ponovno isprobaj.
Pločica i spajanje
- Svijetli li LED-ica ON na pločici? Ako ne svijetli, pločica nema napajanja: provjeri kabel i USB utičnicu, a ako se pločica grije ili je računalo isključi, potraži kratki spoj.
- Isprobaj drugi kabel, drugi USB priključak i, ako treba, drugo računalo. Tako brzo saznaš je li kvar u pločici, kabelu ili računalu.
- Na Windowsu otvori Upravitelj uređaja (Device Manager). Žuti uskličnik pokraj pločice znači da nedostaje upravljački program.
- Učitaj primjer Blink. Ako LED-ica L trepće, pločica i Arduino IDE rade, a greška je u tvojem programu ili sklopu.
Učitavanje
- Poruka
avrdude: stk500_getsync(): not in syncima iste uzroke kaoprogrammer is not responding: pogrešna pločica ili port, port koji koristi drugi program ili nešto spojeno na pinove 0 i 1. Kod nekih klonova pomaže da pritisneš tipku RESET na pločici u trenutku kad počne učitavanje. - Pločica se sama resetira ili se odspoji kad se uključi motor? USB daje samo oko 500 mA. Motore, servomotore i trake LED-ica napajaj iz zasebnog izvora i spoji mase obaju izvora (zabluda 8, zabluda 25).
Prevođenje
- Pročitaj cijelu poruku u izlazu. Obavijest dolje desno i završni redak
exit status 1samo kažu da prevođenje nije uspjelo. Što je krivo, piše iznad njih, pa se pomakni prema gore. warning:nijeerror:. Upozorenje ne zaustavlja prevođenje, a greška ga zaustavi. Upozorenja iz tuđih biblioteka obično smiješ zanemariti. Ipak je najbolje riješiti i upozorenja, osobito ona iz tvojeg programa: često upozoravaju na grešku koja se pokaže tek kasnije, na primjer na varijablu koju koristiš prije nego što joj zadaš vrijednost. Upozorenje iz biblioteke često nestane kad je nadograđuješ na noviju verziju. Koliko upozorenja Arduino IDE prikazuje, biraš u File → Preferences, pod Compiler warnings.No such file or directoryuz#includeznači da biblioteka nije instalirana. Instaliraj je u Upravitelju biblioteka.undefined reference to 'setup'ili'loop'znači da nedostaje jedna od dvije obvezne funkcije. Program mora imati obje, makar bila prazna.Sketch too bigiliNot enough memoryznači da je program prevelik za Uno, koji ima 32 KB memorije za program i samo 2 KB za varijable. Tekst u ispisu stavi uF(), na primjerSerial.println(F("Pokrenuto!"));, pa ostane u memoriji za program. Koristi manje tipove,byteumjestointgdje je broj manji od 256, i izbjegavajString.
Isto vrijedi za veće stalne tekstove i tablice: ključnom riječjuPROGMEMostaju samo u memoriji za program i ne zauzimaju 2 KB za varijable. Takve podatke ne čitamo izravno, nego posebnim naredbama, aSerialih ispisuje ovako:const char s_help[] PROGMEM = "KONTROLE"; // tekst ostaje samo u memoriji za program void setup() { Serial.begin(9600); Serial.println((const __FlashStringHelper *) s_help); // ispis teksta iz memorije za program } void loop() { }Multiple libraries were found forobično nije greška: Arduino IDE samo javlja da je biblioteku našao na dva mjesta i koju je upotrijebio.- Zagrade koje se ne slažu najlakše pronađeš s Auto Format (Ctrl+T). Kad staneš kursorom uz zagradu, Arduino IDE istakne i njezin par.
Kad se program učita, ali ne radi kako treba
- Ispisuj što program radi. Dodaj
Serial.println()na važna mjesta, na primjer kad se pritisne tipkalo ili prijeif, pa u serijskom monitoru vidiš dokle program dođe i koje vrijednosti čita. - Ako se u serijskom monitoru ništa ne pojavi, provjeri ima li program
Serial.begin(), je li brzina ista i ispisuje li uopće nešto. Za probu dodajSerial.println("Halo");uloop(). Pomaže i da monitor zatvoriš i ponovno otvoriš. - Isključi dio programa. Ako ne znaš koji dio stvara problem, privremeno pretvori sumnjive retke u komentar, s
//na početku, pa ih vraćaj jedan po jedan. - Pitaj za pomoć s dovoljno podataka. Voditelju ili na Discordu pošalji poruku greške (tipka Copy error messages), program i opis sklopa, i napiši što si već isprobao.
Dio savjeta preuzet je i prilagođen iz članaka How to Troubleshoot Common Arduino Errors Like a Pro i Troubleshooting Guide for Arduino: Compiling.
Što smo naučili?
- Arduino IDE je program u kojem pišemo program, prevodimo ga i učitavamo na pločicu, i u kojem vidimo što pločica javlja.
- Prevoditelj od programa napravi strojni kod, a bootloader na pločici zapiše ga u mikrokontroler.
- Prije učitavanja odaberemo pločicu (Arduino UNO) i port. Kabel mora prenositi podatke.
- U serijskom monitoru i u programu mora biti ista brzina, a pinovi 0 i 1 zauzeti su serijskom vezom.
- Kod greške prvo čitamo prvu poruku i gledamo redak koji javlja i redak prije njega.
Mali kviz
1. Koja je razlika između tipki Provjeri i Učitaj?
2. Pločica svijetli, ali u izborniku nema njezina porta. Što prvo provjeriš?
3. U serijskom monitoru umjesto poruka vidiš čudne znakove. Zašto?
Serial.begin() u programu. Odaberi u monitoru istu brzinu, na primjer 9600.4. Prevoditelj javlja expected ';' u retku 6. Gdje tražiš grešku?
; tek kad dođe do sljedećeg retka.5. Zašto na pinove 0 i 1 ne spajamo ništa dok učitavamo program?
6. Što radi bootloader?