Tehtävän tavoitteena on LEDin vilkuttaminen ennalta määritellyssä
tahdissa. Samalla tutustutaan Arduinon ohjelmointiin. Kun vilkuttaminen
onnistuu, koetetaan muuttaa LEDin valo mahdollisimman
mielenkiintoiseksi!
Arduino toimintaan
Kurssin ohjelmien asennusohjeet -tiedostossa
on ohjeistettu Arduinon ohjelmointiympäristön asentaminen - jos käytät
koulun konetta etkä voi itse asentaa ohjelmia, voit toimittaa ohjeet
koulusi tietohallintoon. Samassa tiedostossa on listattu kurssilla
tarvittavat elektroniikkakomponentit.
Ohjeet on laadittu tietokoneelle asennettavalle Arduino IDE -ohjelmalle,
jota käytetään myös muilla Mehackitin kursseilla. Voit tarvittaessa
tutustua myös Arduinon ohjelmointiin selaimessa
(create.arduino.cc/editor) tai
Chromebookille tarkoitettuun Arduino Create -sovellukseen, mutta
selkeyden vuoksi esittelemme kurssitehtävät vain yhden
ohjelmointiympäristön, Arduino IDE:n, kautta.
Tarvikkeet
Osa
Kuva
Selitys
Arduino UNO, Mehackit Board tai vastaava
USB-johto (A/B)
Tietokoneella kirjoitettu ohjelma lähetetään Arduinolle USB-johtoa pitkin. Johdon kautta Arduino saa myös virtaa.
2 kpl kytkentäjohtoja
Ohuita, erivärisiä kytkentäjohtoja tarvitaan Arduinolla työskennellessä runsaasti!
Koekytkentälevy
Koekytkentälevylle on kätevä tehdä väliaikaisia kytkentöjä.
Vastus vastustaa sähkövirran kulkua. Vastuksen arvo mitataan ohmeissa (Ω) ja ilmoitetaan komponentissa eri värisinä raitoina (tässä kuvassa oranssi, oranssi, ruskea ja kulta = 330 ohmia).
Kytkentöjen tekeminen Arduinolla
Koekytkentälevy
Kurssin elektroniikkakytkennät tehdään koekytkentälevylle: levyllä
komponentit pysyvät hyvin kiinni, ja kytkennöistä saa helposti selvää.
Levyn reiät ovat riveittäin yhteydessä toisiinsa, joten samaan riviin
kiinnitettyjen komponenttien välillä voi kulkea sähkövirta.
Kunhan virtapiiri on ohjeen mukainen ja kaikki osat mahtuvat levylle,
kytkennän voi tehdä mihin kohtaan levyä tahansa.
Käytettyjen johtojen värin saa valita itse, muttei ole aivan huono idea
tehdä systeemiin jännitettä syöttävä kytkentä punaisella ja virtapiirin
kytkentä maahan sinisellä tai mustalla johdolla. Näin omista
viritelmistä on helpompi saada selvää kun kytkennät monimutkaistuvat.
Virtapiiri
Vaihe 1
Kytke ledin pitkä jalka porttiin 5 hyppylangan välityksellä:
Arduino täytyy myöhemmin ohjelmoida syöttämään tähän porttiin
jännitettä, jolloin LED menee päälle ja pois. Huom: LED johtaa sähköä
vain yhteen suuntaan!
Ledin toinen jalka kytketään vastuksen kautta GND-porttiin. GND on
lyhenne sanasta ground - kaikki Arduino-kytkennät päättyvät ground-
eli maadoitusporttiin. Vastus rajoittaa virtaa, jottei Arduinon portti
mene rikki.
Tutustu ohjelmointiympäristöön
Avaa Arduino IDE ja tarkastele käyttöliittymää!
Tähän kenttään kirjoitetaan Arduino-ohjelmat. Kun IDE avataan, siinä
näkyy jo valmiiksi muutama
perusasia. setup() ja loop() ovat funktioita jotka pitävät
sisällään aaltosulkeiden ( { ja } ) väliin kirjoitetun koodilohkon.
Kun Arduino käynnistyy, se suorittaa setupin sisällä olevat käskyt
kerran. Tämän jälkeen Arduino siirtyy suorittamaan loopin sisällä
olevat komennot ylhäältä alas, yhä uudestaan ja uudestaan. Kahden kauttaviivan (//) jälkeen kirjoitettu teksti on
nimeltään kommentti. Kommentit eivät näy Arduinolle ollenkaan eikä
niitä siis suoriteta. Kommentit ovat koodin kirjoittajan tekemiä
muistiinpanoja.
Tämän osan napeista kaksi ensimmäistä ovat tärkeimmät: ensimmäisestä
voi halutessaan tarkistaa koodin oikeinkirjoituksen eli syntaksin,
ja toisesta (nuoli) ohjelma lähetetään Arduinolle USB-johdon kautta.
Ylävalikoista varsinkin aluksi tärkeitä ovat File, josta löytyvät
omat ohjelmat ja Arduinon valmiit, tosi hyvät esimerkkiohjelmat,
sekä Tools, jossa valitaan Arduino-malli ja Arduinon käyttämä
portti.
Alaosan musta alue on nimeltään konsoli, ja tähän ilmestyvät
Arduinon virheilmoitukset
Tästä avataan Serial monitor eli sarjamonitori. Sitä käytetään
myöhemmin erityisesti anturien tuottaman tiedon seurantaan.
Ensimmäinen ohjelma: LED vilkkumaan
Vaihe 2
Ohjelmointi 1/2: LED toimintaan Kirjoita seuraava koodi Arduino IDEen. Liitä Arduino USB-johdolla
tietokoneeseen. Mene Tools-valikkoon, tarkista että Board-asetus on
Arduino/Genuino UNO, ja että Port-asetuksena on portti, jonka nimi
viittaa jotenkin Arduinoon. Klikkaa Arduino
IDE:n upload-painiketta
(nuoli vasemmalla ylhäällä).
Arduinolle kerrotaan, että porttiin 5 on kytketty laite, jolle
jossain vaiheessa aiotaan syöttää jännitettä: pinMode(5, OUTPUT);
Tämä tehdään vain kerran, joten komento voidaan antaa setup-osan
sisällä.
Porttiin 5 laitetaan jännite päälle komennolla digitalWrite(5, HIGH);
Kytkentäalustalla nököttävä yksinäinen LED ei ehkä herätä montaakaan
rakentelu-, värkkäily- ja taiteluideaa. LEDin valo ei näytä kovin
vaikuttavalta - sillä on selkeä suunta: se näkyy hyvin kirkkaana
suoraan ylhäältä päin, kun taas sivusta katsottuna valo on
vaatimaton.
Tutki erilaisia materiaaleja ja esineitä ja yhdistele niitä LEDin
kanssa.Tutki, kuinka saat valon näyttämään vaikuttavammalta. Saatko
valon taittumaan, siroamaan, heijastumaan tai suodattumaan
kiinnostavalla tavalla? Ota kuva ja esittele hienoin löydöksesi
muille!
Ideoita tuunaukseen
Vinkkejä
Kokeile erilaisia LEDejä, valitse kirkkain ja mieluisin.
Jos sinulla on käytössä hyppylankojen jatkojohtoja, irrota LED
kytkentäalustasta ja pidennä johtoja. Näin voit kätevämmin asetella
valon erilaisten esineiden sisälle.
Jos sinulla on 9V paristo ja Arduinoon sopiva paristoliitin, käytä
niitä - voit irrottaa Arduinon USB-johdosta, liikutella systeemiä ja
testailla valoa helpommin eri paikoissa.
LEDin voi kiinnittää tukevasti kuumaliimalla materiaaleihin ja
esineisiin
eri materiaaleja voi yhdistellä tehokkaimman vaikutuksen
aikaansaamiseksi. Mieti, haluatko esimerkiksi ensin taittaa tai
sirottaa ja sitten vasta heijastaa tai suodattaa valoa?
Jos teet harjoitusta toisten kanssa tai vedät sitä oppijoille,
yhteistyö muiden kanssa kannattaa - on mahdollista tehdä useamman
LEDin systeemi, jonka voi ajastaa delay-komennoilla hienosti.
Tehtävään voi liittää koulussa havainnointia: kuinka
valaisimissa sirotetaan, suodatetaan, taitetaan, heijastetaan valoa?
Millainen valaisin häikäisee, valaisee kirkkaasti tai luo
tunnelmaa?
tehtävässä voi olla tarpeen asettaa aikaraja - ei kannata
jäädä miettimään liian pitkäksi aikaa, jotta tulee valmista!
Suomen tunnetuimman luovan teknologin työnäytteitä
Alvar Aalto kiinnitti arkkitehtuurissaan runsaasti huomiota
valaistukseen ja suunnitteli tavallisesti myös rakennusten
valaisimet. Valaisimissa käytettyjen materiaalien ja muotojen kirjo on
vaikuttava, ja valon käyttäytymistä ja tarkoitusta kussakin tilassa on
pohdittu ja testattu perusteellisesti.
Alvar Aallon ateljee, 1955-56 Kangasta käytettiin mm. Ateljeen ruokalan valaisimissa. Valaistus alakerran ruokalassa oli tarkoituksella hämärämpi, jotta syntyi kontrasti yläkerran työtilojen runsaaseen päivänvaloon.
Alvar Aallon Ateljee, 1955-56 Valaisimia vaihdeltiin tässä demoripustuksessa: uusia malleja saattoi tarkastella ja esitellä paremmin. Aallon valaistussuunnitelmissa ja valaisimissa käytettiin aina epäsuoraa valoa: valo ei saa häikäistä, mutta sitä täytyy saada valaisimesta tarkoituksenmukainen määrä.
Paimion parantola, 1929-33 Aallon oma kokemus potilaana inspiroi suunnittelemaan tämän valaisimen. Vuoteessa maatessa ei ole mukava häikäistyä, mutta sairaalavalaistuksessa ei tätä aina muisteta huomioida. Kattoon maalattu valkea puoliympyrä heijastaa valoa alaspäin, ja lampun alaosa torjuu suoraa valoa.
Ongelmanratkaisu
Eikö Arduino toimi niin kuin halusit? Ei hätää - tämä on ihan tavallista myös kokeneille Arduino-värkkääjille. Käy läpi seuraava tarkistuslista, yleensä vika on jokin näistä!
Onko Tools- eli Työkalut-valikossa, kohdassa Port (Portti) valittuna se Arduinoon viittaava portti?
Onko Tools- eli Työkalut-valikossa, kohdassa Board valittuna Arduino/Genuino UNO?
Onko koodissa ja kytkennöissä varmasti käytetty samaa Arduino-porttia?
Ovatko puolipisteet oikeilla paikoillaan?
Onko jokaisella kaarisulkeella ja tavallisella sulkeella pari?
Onko LED oikein päin? Lyhyempi jalka kytketään aina maahan eli GND-porttiin päin.
Jos kopioit koodia IDEen: onko koodiin tullut vahingossa 2 setup- tai loop-osaa? Niitä saa olla vain yksi kumpaakin.
Koodissa saa olla vain oikeinkirjoitettuja komentoja sekä kommentteja ( //mitä vain tekstiä kahden kauttaviivan jälkeen. Oletko vahingossa poistanut kauttaviivoja kommenttien edestä?
Oletko kirjoittanut isot ja pienet kirjaimet kuten esimerkissä?
Oletko käynyt läpi kytkemäsi johdot - että johdot on kytketty samalle kytkentäalustan riville kuin komponentit?
Oletko kokeillut irrottaa USB-johdon ja kiinnittää sen uudelleen?
Oletko kokeillut kytkeä Arduinon eri USB-porttiin? - Huom: tämän jälkeen tarkista portti Tools-valikosta.
Oletko resetoinut Arduinon pienestä napista laitteen päällä? Tämä käynnistää laitteelle ladatun ohjelman alusta.
Eihän sinulla ole komponentteja kytkettynä portteihin 0 tai 1? Nämä portit tarvitaan joskus Arduinon ja tietokoneen väliseen tietoliikenteeseen, mikä voi välillä sotkea asioita.
Kokeilitko etsiä Arduino IDE:n tuottamalla virheilmoituksella ohjeita netistä?
Lisätietoa
Setup- ja loop-funktioiden edessä on sana void. Sillä
tarkoitetaan funktion palautusarvoa, mutta tässä vaiheessa kurssia
palautusarvoista ei tarvitse välittää.
Isoilla ja pienillä kirjaimilla on ohjelmoinnissa väliä. Arduino ei
pidä komentoja digitalwrite ja digitalWrite samana komentona.
Ole tarkkana myös sulkujen ja puolipisteiden kanssa. Kokeile mitä
tapahtuu, jos jätät puolipisteen kirjoittamatta. IDE:n konsoliin
ilmestyy virheilmoitus: "error: expected ';' before '}'
token". Virheilmoituksia saattaa olla aluksi haastava tulkita,
mutta niistä löytyy hyviä vihjeitä. Tämä ilmoitus kertoo, että ennen
tietyllä rivillä olevaa aaltosulkua } pitäisi olla puolipiste.
Käytetyt komennot
Allaolevat linkit johtavat Arduinon sivuille, *referenssiin. *Siellä
kuvataan kaikki Arduinon komennot käyttöesimerkkeineen. Referenssiin
kannattaa tutustua, se on todella hyvä tietolähde!