Elektroniikka ja ohjelmointi

Johdanto

Tehtävän tavoitteena on LEDin vilkuttaminen ennalta määritellyssä tahdissa. Samalla tutustutaan Arduinon ohjelmointiin. Kun vilkuttaminen onnistuu, koetetaan muuttaa LEDin valo mahdollisimman mielenkiintoiseksi!

Helsinkiläiset alakoululaiset toteuttivat nämä tyylikkäät poliisivalot 10 minuutissa! (Kuva: Mehackit)

Helsinkiläiset alakoululaiset toteuttivat nämä tyylikkäät poliisivalot 10 minuutissa! (Kuva: Mehackit)

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

OsaKuvaSelitys
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äjohtojaOhuita, erivärisiä kytkentäjohtoja tarvitaan Arduinolla työskennellessä runsaasti!
KoekytkentälevyKoekytkentälevylle on kätevä tehdä väliaikaisia kytkentöjä. 
LED - minkä värinen vain, mielellään kirkas!

Pidempi jalka (kuvassa mutkallinen) kytketään jännitettä syöttävään porttiin. Lyhyempi jalka kytketään GND-porttiin (eli maahan).

Vastus 220 tai 330 Ω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.

koekytkentälevy

Kunhan virtapiiri on ohjeen mukainen ja kaikki osat mahtuvat levylle, kytkennän voi tehdä mihin kohtaan levyä tahansa.

piirros koekytkentälevystä

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.
ledin kytkentä

Tutustu ohjelmointiympäristöön

Avaa Arduino IDE ja tarkastele käyttöliittymää!

arduino ide
  1. 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.
  2. 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.
  3. 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.
  4. Alaosan musta alue on nimeltään konsoli, ja tähän ilmestyvät Arduinon virheilmoitukset 
  5. 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ä).
void setup() {
 pinMode(5, OUTPUT);
}

void loop() {
  digitalWrite(5, HIGH);
}

Koodissa tapahtuu nyt seuraavaa:

  • 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); 

  • Jos ohjelma ei toimi: käy läpi tarkistuslista tavallisimmista Arduino-ongelmista!


Vaihe 3

Ohjelmointi 2/2: LEDin vilkuttaminen

Jatka koodia esimerkin mukaan. Lataa koodi Arduinolle. Muuta sitten delay-arvoja, ja tarkkaile mitä tapahtuu. 

void setup() {
 pinMode(5, OUTPUT);
}

void loop() {
  digitalWrite(5, HIGH);
  delay(1000); 
  digitalWrite(5, LOW); 
  delay(1000);
}
  • Delay-komento pysäyttää ohjelman suorittamisen suluissa ilmoitettavaksi ajaksi. Yksikkönä on millisekunti, eli luku 1000 vastaa yhtä sekuntia.
  • digitalWrite(5, LOW); laittaa portin 5 jännitteen pois päältä. Koska Arduino toistaa loop-osaa, valo vilkkuu loputtomasti.
  • Jos ohjelma ei toimi: käy läpi tarkistuslista tavallisimmista Arduino-ongelmista!

LEDin tuunaus

Vaihe 4
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!

Haluaisitko kytkeä monta LEDiä virtapiiriin?

Tässä esimerkki kytkennästä ja ohjelmoinnista!

monta ledia

Koodi:

ledin koodi