Tarkempaa tietoa saat myös kurssin GitHub-alustalta. Sen wiki-osio on kattava ja yksityiskohtainen, kun tämä vihkonen taas on vain ensihätään.



Samankaltaiset tiedostot
Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi.

LUMA SUOMI -kehittämisohjelma LUMA FINLAND -utvecklingsprogram LUMA FINLAND development programme Ohjelmointia Arduinolla

Python-ohjelmointi Harjoitus 2

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

Arduinon ohjelmointi. Sami-Petteri Pukkila. 6. helmikuuta 2017

Liikennevalot. Arduino toimii laitteen aivoina. Arduinokortti on kuin pieni tietokone, johon voit ohjelmoida toimintoja.

Ohjelmointiharjoituksia Arduino-ympäristössä

1 Tarkistetaan että kaikki toimii

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Peter Kronström

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Arduino. Kimmo Silvonen (X)

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Java-kielen perusteet

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

12. Javan toistorakenteet 12.1

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

13. Hyvä ohjelmointitapa (osa 1) 13.1

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

11. Javan toistorakenteet 11.1

12. Javan toistorakenteet 12.1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Arduino. Kimmo Silvonen (X)

////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ //-PID säätimellä. #include <EEPROM.h> #include <SoftwareSerial.h>

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Java-kielen perusteet

Ohjelmointi 1. Kumppanit

Ohjelmoinnin perusteet Y Python

GSM PUHEVIESTI & SMS HÄLYTYKSENSIIRTOLAITE

8. Näppäimistöltä lukeminen 8.1

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

5. HelloWorld-ohjelma 5.1

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

11. Javan valintarakenteet 11.1

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Arduinon ohjelmointi. Sami-Petteri Pukkila. 1. helmikuuta 2016

Java-kielen perusteita

Ohjelmoinnin perusteet Y Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

14. Hyvä ohjelmointitapa 14.1

Comet pysäköintimittarin asennus ja kytkeminen tietokoneeseesi (Windows XP) USB-kaapelilla.

13. Loogiset operaatiot 13.1

WBelectronics. Infinity USB Phoenix - Käyttöohje

4. Lausekielinen ohjelmointi 4.1

Arduino. Kimmo Silvonen (X)

Ohjelmoinnin peruskurssi Y1

ITKP102 Ohjelmointi 1 (6 op)

CipherLab CPT-8001L -tiedonkeruupäätteen käyttö Ecomin kanssa

JOVISION IP-KAMERA Käyttöohje

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Alkuun HTML5 peliohjelmoinnissa

Java-kielen perusteita

Ohjelmoinnin perusteet Y Python

Mikro-ohjain µc harjoitukset - yleisohje

Python-ohjelmointi Harjoitus 5

2013 -merkistä tunnistat uudet ominaisuudet

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Oma kartta Google Maps -palveluun

Arduinon ohjelmointi. Sami-Petteri Pukkila. 26. syyskuuta 2016

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

5. HelloWorld-ohjelma 5.1

Arduino ohjelmistokehitys

Ohjelmoinnin peruskurssi Y1

KIITOS RICA OPTIMOINTIOHJELMAN VALITSEMISESTA

Ohjelmoinnin perusteet, syksy 2006

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Java-kielen perusteet

MOODLE-OHJE: Liitetiedoston lisääminen ja päivittäminen

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Kon Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö

Ohjelmoinnin perusteet Y Python

Pika-asennusohjeet Suomeksi

ELOKUVAKASVATUS SODANKYLÄSSÄ VIDEON SIIRTÄMINEN DVD-LEVYLLE

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

Let Me Hack It -kurssilla tarvittavat ohjelmat ja välineet

Taulukot. Jukka Harju, Jukka Juslin

QR-koodit INNOSTAVAA HAUSKAA PALJON KÄYTTÖTAPJA HELPPOA ILMAISTA MOTIVOIVAA

Taloyhtiön laajakaistan käyttöohje, Tekniikka: HomePNA. Käyttöjärjestelmä: Windows XP

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

ASCII-taidetta. Intro: Python

Ohjelmoinnin perusteet Y Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

13. Loogiset operaatiot 13.1

Muuttujien roolit Kiintoarvo cin >> r;

Ohjeet e kirjan ostajalle

Selkosanakirja sdfghjklöäzxcvbnmqwertyuiopåasdfghjklöäzxcvbnmq. Tietokoneet. wertyuiopåasdfghjklöäzxcvbnmqwertyuiopåasdfghjk 1.4.

CEM DT-3353 Pihtimittari

Keskellä ruutua kuvan yläpuolella linkki on call diabeteksen hallintaohjelmisto. Klikkaa sitä

PIKAOPAS. Nokia Connectivity Cable Drivers -ohjainten asentaminen

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Muuttujien määrittely

Harjoitus 5 (viikko 41)

Ohjelmoinnin perusteet Y Python

Transkriptio:

Sisällys Johdanto... 3 Ohjeita materiaalin käyttöön... 3 Mikä on arduino?... 4 Arduino-alustan pinnijaottelu... 4 Koodin rakenne... 8 Pinnin määrittely... 9 Muuttujat... 10 Tyypillisimmät ohjelmointilauseet... 11

Johdanto Tämä materiaali on tarkoitettu muualta opitun tueksi ja ennen opitun kertaamiseksi. Siihen on kirjattu vain arduino-ohjelmoinnin perusasioita, joiden muistelemisesta voi olla kiperän tilanteen sattuessa hyötyä, eikä se näin ollen poista tarvetta opiskella ohjelmointia ruohonjuuritasosta alkaen. Yksinkertaisuudessaan ja monimutkaisuudessaan ohjelmointi on mukavaa aivopähkinää ongelmaratkaisuineen ja motivoivaa työskentelyä näkyvän lopputuloksensa vuoksi. Serial.println ( Hello World! ); -Lauri ja Mikko Ohjeita materiaalin käyttöön Kun ohjelmointia teet ja tämä läpyskä on vieressäsi, istut luultavammin myös internetyhteyden vieressä. Kehotamme lämmöllä käyttämään hakukoneita, sillä niiden hakutulokset usein selventävät sinulle vaikeaksi jäävää asiaa. Materiaaliin on myös tiputeltu ohjelmoinnin komentoja ja termejä helposti erotellussa muodossa, ikään kuin hakuvinkkinä. Ne ovat vaikeita sanoja, jotka on merkitty sulkein ja kursiivilla. Esimerkiksi (muuttuja). Koska Arduinoa kuitenkin ohjelmoidaan C-kielien sukuisella ohjelmointikielellä, voi pelkkä merkitty sana tuottaa hakutuloksia hieman sivuun sinua koskevasta aiheesta, on hyvä lisätä hakuun myös sana arduino. Tarkempaa tietoa saat myös kurssin GitHub-alustalta. Sen wiki-osio on kattava ja yksityiskohtainen, kun tämä vihkonen taas on vain ensihätään. Esimerkkihaku boolean-muuttujasta: Google: Boolean Saat yleislaatuista tietoa boolean-muuttujasta. Toki tämäkin voi olla hyödyllistä, mutta booleaninkin yksityiskohdat muuttuvat koodattavan kielen mukaan. Google: Boolean arduino Heti ensimmäinen hakutulos on arduinon oma sivunsa boolean muuttujasta. Tältä sivulta saat varmasti paikkaansa pitävää ja ajantasaista tietoa booleanista ja sen käytöstä.

Mikä on arduino? Arduino on ohjelmoitava mikrokontrolleri, eli laite jolla voi tehdä kaikkea kivaa. Sillä voit esimerkiksi vilkuttaa ledejä ja ohjata erilaisia laitteita. Jotkut ovat jopa tehneet älypuhelimella ohjattavan tankin. Yksinkertaisesti sanottuna mikrokontrolleri on mikropiiri, pieni tietokone, jonka sisään- ja ulostuloja voidaan ohjelmoida tietokoneen avulla. Arduino koostuu kahdesta osasta: Tietokoneella käytettävästä ohjelmointisovelluksesta ja fyysisestä mikrokontrollerista. Olipa kyseessä mikä tahansa arduino-alusta, sitä ohjelmoidaan samalla sovelluksella ja samalla tavalla kuin muitakin alustoja. Koska Arduino on avoin järjestelmä, laitteita on alkuperäisen Arduino-tuotemerkin lisäksi myös muiden valmistajien tekeminä. Nämä ovat usein kopioita ja paranneltuja versioita alkuperäisistä alustoista. Tunnettuja merkkejä ovat esim. Funduino ja Meduino. Arduino-alustan pinnijaottelu Kuvassa näkyy Arduino Uno:n tärkeimmät pinnit. Pinnien jaotteluperiaate on sama kaikissa arduinoissa: Digitaaliset sisään- ja ulostulot, analogiset sisääntulot, maapinnit ja jännitteen sisään ja ulostulot. Tarkemmat tiedot löydät aina valmistajan nettisivuilta, tässä tapauksessa http://arduino.cc/en/main/arduinoboarduno

Arduino-ohjelmoinnin aloittamiseksi on oltava seuraavat välineet: o Arduinotulkki Arduinotulkki on ohjelma, jonka voi ladata ja asentaa maksuttomasti Arduinon kotisivuilta, Downloads-välilehden takaa osoitteesta: http://arduino.cc/en/main/software. Arduinotulkki on mahdollista asentaa sekää Windows, MacOS että Linux-ympäristöihin. o Jokin Arduino-mikrokontrolleri Kurssin puitteissa harjoitusmateriaalina käytetään Arduino Uno ja Arduino Nano malleja. o USB-johto Sopiva USB-johto tulee yleensä ostetun Arduinon mukana ja koska USB sisältää yleiset liitinstandardit, saattaa sopivia johtoja olla myös muiden laitteiden ohessa. Kun arduinotulkki on asennettu tietokoneeseen, voi aloittaa koodin tuottamisen vaikka heti. Koodaaminen tapahtuu hieman windowsin muistiota muistuttavassa ikkunassa, johon teksti joko kirjoitetaan näppäimistöllä tai se kopioidaan toiseesta lähteestä.

Kun halutaan siirtää jo valmis koodi tietokoneelta Arduinolle, on ensin kytkettävä Arduino ja tietokone toisiinsa sopivalla USB-johdolla. Kun Arduino on kiinni ja siinä syttyy ledvalo käynnistymisen merkiksi, tulee valita tulkin tools-valikosta kohta Board. Aukeavasta valikosta etsitään omaa Arduinoa vastaava alustamalli. Alustamallin valinnan jälkeen valitaan Serial Port-kohta. USB-väylä on aina merkinnältään COM-alkuinen, esimerkiksi COM24 ja jokainen USB-portti on merkitty eri numerolla. Ensimmäisillä kerroilla tai vieraalla koneella selkeää yhteyttä USB-portin fyysisen paikan ja Serial Port-tunnuksen kanssa ei ole havaittavissa, vaan Serial Port-tunnus on kokeiltava yrityksen ja erehdyksen kautta. Kun Arduino on oikealla tavalla yhdistetty tietokoneeseen, on aika kokeilla koodin viemistä tulkilta mikrokontrollerille. Viereisessä kuvassa näkyy tulkkiohjelman yläreunassa olevat kuvakkeet. Kuvake yksi(1) ajaa koodin tarkastuksen, jossa tulkki tarkastaa koodista esimerkiksi kirjoitusvirheet. Tulkki ei kuitenkaan ymmärrä kaikkia mahdollisia virheitä! Kuvake kaksi(2) ajaa koodin tulkin läpi ja jos tulkki ei löydä koodista virheitä, ajaa se sen myös mikrokontrollerille. Kuvake kolme(3) luo uuden tyhjän koodiasiakirjan. Tämän saa tehtyä myös painamalla File ->New tai pikanäppäimellä Ctrl+N. Kuvake neljä(4) aukaisee aiemmin tallentamasi koodiasiakirjan. Tämän saa tehtyä myös painamalla File -> New tai pikanäppäimellä Ctrl+O. Kuvake viisi(5) tallentaa aktiivisen koodiasiakirjan myöhempää aukaisua varten. Tämän saa tehtyä myös valitsemalla File -> New tai pikanäppäimellä Ctrl+S.

Jos koodia mikrokontrollerille ajettaessa tulkki antaakin virheilmoituksen, pääsee parhaiten sen sisällöstä selville syöttämällä virheilmoituksen internetin hakukoneeseen. Virheilmoituksia on useita erilaisia ja tässä materiaalissa on käyty läpi vain muutama useimmin ongelmaksi muodostuvista. Vaikka tulkki olisikin päästänyt koodin lävitseen ja ajanut sen mikrokontrollerille, ei se tarkoita, että koodi toimisi niin kuin sen on tarkoitus. Näissä tapauksissa ei auta kuin koodin läpikäyminen tarkasti. Toimimattoman koodin korjaamiseen, kts. Koodin yleisimmät virheet.

Koodin rakenne Koodin rakenne näyttää monimutkaiselta, mutta oikeastaan sen toiminta on yksinkertaista. Arduinon ohjelmista löytyvät aina kolme osaa: Määrittelyt, setup ja loop. Arduinoohjelmassa voi olla myös muita osia, mutta nämä kolme löytyvät aina arduino-ohjelman rakenteesta. Esimerkkikuvassa määrittelyt ovat kaksi ensimmäistä riviä. Määritellään intmuuttujat kytkin ja led. (kts. Muuttujat) Määrittelyjen jälkeen alkaa setup-osio, jossa pinnit kuusi (kytkin) ja seitsemän (led) määritellään kumpikin omaan käyttöönsä. Loop-osiossa kerrotaan Arduinolle, mitä tehdä ja missä tilanteessa. Se on osio, jota arduino suorittaa loputtomasti, eli käytännössä niin kauan kuin virtaa riittää. Katso alta visualisoitu kuvio koodin kierrosta.

Pinnin määrittely Sen lisäksi, että on määriteltävä käytetyt muuttujat, on määriteltävä myös pinnin asetukset. Pinnien asetukset määritellään setup-osiossa. Setup-osiossa tulee määritellä, onko pinni sisääntulo (INPUT) vai ulostulo (OUTPUT). Esimerkkinä edellisen sivun kuvasta: pinmode (led, OUTPUT); Komennolla pinmode tapahtuva määrittely tehdään pinnille 7, koska määrittelyissä muuttujan led arvoksi on määritelty 7. Koska pinniin 7 on kytketty led, jolle halutaan antaa virtaa, on pinni määriteltävä ulostuloksi. Digitaaliset pinnit (DigitalRead ja DigitalWrite) Mallista riippuen näitä on eri määrä, mutta perus Arduino Unossa näitä on 14 ja ne on merkitty numeroilla 0 13. Digitaalinen pinni voi toimia sisääntulona (input), jolloin se vastaanottaa virtaa esimerkiksi painalluskytkimessä, jolloin se saa tiedon painonapin painamisesta. Se voi myös toimia ulostulona (output), jolloin se lähettää virtaa jollekin laitteelle tai komponentille, esimerkiksi ledille. Analoginen sisääntulo (AnalogRead) Arduino Unossa analogisia sisääntuloja on kuusi ja nämä pinnit on merkitty tekstillä ANALOG IN ja kirjain-numero yhdistelmillä A0 A5. Nämä sisääntulot saavat analogisen arvon eri komponenteilta, kuten potentiometri tai ultraäänianturi. Arduino muuttaa tämän analogisen arvon numeroksi, jota voit käyttää ohjelmoidessasi. Analoginen ulostulo (AnalogWrite) Jotkin Arduinon digitaalisista pinneistä on merkitty numeron lisäksi myös viivalla. Unossa ne ovat pinnit 3,5,6,9,10,11. Näitä voi käyttää myös analogisina ulostuloina sen ollessa tarpeellista. Tämä johtuu siitä, että näissä pinneissä on pulssileveysmodulaatia (PWM tai Pulse width modulation).

Muuttujat Muuttujatyyppejä on erilaisia ja tässä käydään läpi vain arduino-ohjelmoinnin kannalta yleisimmät ja tarpeellisimmat. Lisätietoja löydät etsimällä internetistä hakusanoilla muuttuja, muuttujat, variable tai variables. Voit myös pistää hakuun mukaan sanan arduino, jolloin saat ohjeita vain arduinolle kelpaavista muuttujista. Muuttujat on fiksua määritellä aina koodin alussa, määrittelyissä, jotta niiden kaikkien määrittelyt löytyvät samasta paikasta. int = (interger) = kokonaisluku Määrittely: int kytkin = 3; tai int kytkin = -3; Intergermuuttuja tai int saa aina arvokseen numeraalisen kokonaisluvun. Intmuuttujaan ei voi tallentaa muunlaista arvoa. Int-muuttujan arvo voi kuitenkin olla sekä positiivinen, että negatiivinen. Int on muuttujista yleisin ja eniten käytetty. float = (floating point) = desimaaliluku Määrittely: float muuttuja = 3.345; Samankaltainen, kuin interger ylempänä, mutta saa arvokseen desimaaliluvun. Huomioi, että floatissa käytetään desimaalipilkun sijasta pistettä. Tämä on yleistä useimmissa ohjelmointikielissä. char = (character) = kirjain/kirjoitusmerkki ja Str = (String) = Merkkirivi Määrittely: char merkki = a ; tai char Str1[8] = arduino ; Char-muuttuja saa arvokseen aina yhden kirjaimen tai kirjoitusmerkin. Jos haluat siis muuttujaksesi yhden sanan, tarvitsee sinun tehdä charmuuttujastasi string. Stringin yhteydessä oleva hakasulkein suljettu numero tarkoittaa stringissä olevien merkkien määrää. boolean = (boolean) =Tosi/epätosi Määrittely: boolean kaynnissa = true; tai boolean kaynnissa = false; Boolean-muuttujaan voidaan tallentaa tieto siitä, onko jokin tosi vai epätosi. Loput mahdollisuudet löydät totutusti arduinon verkkosivuilta: http://arduino.cc/en/tutorial/variables

Tyypillisimmät ohjelmointilauseet Kaikkein tyypillisen ja useimmitten tarvittu lause ohjelmoinnissa on if-lause. Sen avulla saadaan aikaan linkki kahden asian välille. Esimerkkinä, jos muuttuja luku on suurempi kuin kolme, sytytetään ledi pinnissään. Tämä toimenpide tapahtuu tällaisella koodin pätkällä: if (luku > 3); Tällä rivillä annetaan ehdot, joiden täyttyessä arduino suorittaa aaltosulkeisiin merkityt tehtävänsä. { Aaltosulkeet rajaavat komennot, jotka suoritetaan ehtojen täyttyessä. digitalwrite(led,high); } Toinen tyypillinen lause ohjelmoinnissa yleensä on for-lause, jonka ymmärtäminen on hieman monimutkaisempaa kuin if-lauseen ymmärtäminen ja käyttäminen. For-lauseen määrittelyissä on kolme osaa. Ensimmäisessä osassa määritetään lähtöarvo for-lauseessa käytettävälle muuttujalle. Esimerkissä määritetään muuttujalle luku lähtöarvoksi 1. Toisessa osassa testataan, onko muuttujan ehtojen mukainen. Esimerkissä kokeillaan, onko muuttujan luku arvo pienempi kuin 250. Kolmannessa kohdassa on toimenpide, joka muuttujalle tehdään for-lauseen jokaisen läpiajon jälkeen. Esimerkissä muuttujan luku arvoon lisätään joka kierroksen jälkeen 1 for ( int luku = 1; int luku <=250 ; luku++) { digitalwrite(led,high); delay(100); digitalwrite(led,low); delay(100); } For-lauseen kolmannen kohdan hoxhox-pähkinä: Esimerkkinä toimivan for-lauseen toimenpiteenä on erikoinen luku++, joka tarkoittaa sitä, että muuttujan luku arvoa muutetaan joka for-kierron jälkeen yhtä kokonaislukua suuremmaksi. Eli jos luku on ensimmäisellä kierroksella

arvoltaan 1, on se ensimmäisen kierroksen jälkeen arvoltaan 2 ja for lähtee alusta. For-lauseen kolmas kohta, eli muuttujan muokkaaminen voi sisältää monenlaisia laskutoimituksia ja siinä toimivatkin lähes kaikki matemaattiset toimenpiteet. Voit siis pistää esimerkin tilalle esimerkiksi luku * 5 jolloin tietenkin for-lause etenisi loppuunsa aikaisemmin kuin pelkällä luku++ - laskutoimituksella.

Koodin yleisimmät virheet Tulkki päästää koodin lävitseen, vaikka se ei toimisikaan halutusti suorittaessa. Tästä löydät yleisimmät korjaustoimet koodin korjaamiseen. Onko sinulla käytössä samat pinnit sekä fyysisesti, että koodissa? Yksinkertaisimmillaan johdon on kytkenyt eri pinniin, kuin mihin mikropiiri koodin ohjaamana antaa virtaa. Tämä on helppo korjata joko koodista, tai johtoa siirtämällä. Onko muuttujat kirjoitettu oikein? Muuttujien pitää olla joka paikassa kirjoitettuna samalla tavalla, että mikropiiri ymmärtää ne oikein suorittaessaan. Katso muuttuja kerrallaan kirjoitusasu ensin määrittelystä ja sitten koodin keskeltä. Sopivatko muuttujatyypit tehtäväänsä? Int-muuttujaa ei voi käyttää kirjoitusmerkkiarvona, eikä char-muuttujaa kokonaislukuna. Onko osilla aikaa suorittaa mikropiirin antama käsky? Mikropiiri käy koodiloopin läpi sekunnin tuhannesosissa. Tällainen aika ei riitä esimerkiksi servomoottorin liikuttamiseen. Osille pitää antaa toimimisaikaa esimerkiksi delay-komennolla. (Googlaa delay, jos se on sinulle vieras.) Onko kaikki sulkeet suljettu oikeassa kohtaa? Sulkeita, lainausmerkkejä ja aaltosulkeita. Tulkki katsoo vain, että näitä on oikea määrä, eikä mikään näistä jää auki. Eli sulkeiden sisällä voi olla käytännössä mitä tahansa, mitä sinne olet kirjoittanut. Seuraa siis sulkeiden avausrivistä aina funktion sulkevaan sulkeeseen, että niiden välissä on oikeat asiat. Onko koodisi vahingossa kommenttia? Harvoin, mutta kuitenkin joskus käy niin, että kommentti onkin jäänyt auki ja kaikki sen jälkeinen teksti onkin kommenttia. Vilkaise siis myös, että kommenttisi on lopetettu siihen missä se loppuu. Jos ongelmaasi ei löytynyt näistä kohdista, käy oman tietotaitosi mukaan koodi läpi, osuiko silmiisi joku virhe? Käy myös läpi funktiosi. Toimiiko if tai while niin kuin meinasit vai pitäisikö sinun koittaa saavuttaa haluttu tulos toisella tavalla? Arduinon oma troubleshoot on myös erittäin laaja ja se löytyy verkosta: http://arduino.cc/en/guide/troubleshooting