Tämä sivu on osa Arduino Opas 2:sta. Oppaassa käytetyt koodit löytyvät GitHubista: https://github.com/hutasunet/ArduinoOpas2.
Mikrokontrollereiden ja sulautettujen laitteiden toiminta perustuu lähes poikkeuksetta johonkin I/O-tietoon, jota käyttäjän tarvitsee tutkia tai ohjata ja usein mukana on myös jotakin antureita tai muuta "älyä". Ilman IO:ta kaikki laitteet olisivat hyödyttömiä, koska ne eivät voisi ohjata mitään tai tulkita mitään ympäristöstään. Joten siksi käsittelemme ensimmäisenä pikapuolisesti Arduino Uno R4 Miniman tuloja ja lähtöjä, jotta perusteet niiden käytölle saadaan kuntoon.
Arduino Uno R4 Miniman IO-kartan näet alta. Kuvasta nähdään mitä pinnejä Minimalla on tarjolla ja mitä moodeja eli toimintoja tai ominaisuuksia kussakin on.
Pinnilistauksen pääset näkemään myös seuraavan linkin takaa: https://docs.arduino.cc/resources/pinouts/ABX00080-full-pinout.pdf.
Kuvassa oranssilla värillä on ilmaistu Arduino IDE:ssä käytettävät porttinumerot ja keltaisella pohjalla olevissa laatikoissa on kerrottu, mihin porttipinniin IO-yhdistyy RA4M1-mikroprosessorilla. Muilla väreillä on ilmaistu, mihin oheislaitteeseen nastat yhdistyvät (esimerkiksi AD-muunnin vihreällä). Näiden lisäksi levyltä löytyy omat porttipinnit piirilevyllä oleville ledeille ja niitäkin voidaan halutessaan ohjelmoida, mutta Arduinon kieli ei suoraan tue tällaista ominaisuutta esimerkiksi digitalWrite() -funktiolla.
Huomioitavaa Arduinon IO-pinnien käytössä on, että niihin ei saa kytkeä mitä tahansa jännitettä. Huomioi siis aina kytkentää tehdessä, mitä jännitettä pinneihin kytketään.
4.1 Arduino Miniman testaus
Testataan aluksi, että kaikki toimii kuten pitääkin. Aloitetaan yksinkertaisesta lähdön asetuksesta 0 ja 1 -tilaan. Avataan tätä varten esimerkkikoodi Minima levyltä löytyvän ledin vilkutukseen. Avataan valikosta esimerkkikoodi valikosta: File -> Examples -> 01. Basics -> Blink.
Esimerkkikoodi avautuu editoriin, ja huomataankin heti, että koodi käyttää nimettyä vakiota LED_BUILTIN digitalWrite-funktiossa. Toiminnan varmistamiseksi ohjelmoidaan esimerkkikoodi levylle, jolloin saadaan varmuus että ohjelmointiympäristö ja ohjelmointi toimii oikein.
Klikataan "Upload" nappia ja hetkisen päästä ohjelma päivittyy mikropiirille.
Ledin pitäisi nyt vilkkua. Jos ei, niin tarkista että olet valinnut oikean levyn Tools -> Board -valikosta ja että käytettävä yhteys on oikein.
4.2 Itse valitun porttipinnin asetus
Testataan seuraavaksi jotakin toista porttipinniä ja tässä tapauksessa valitaan pinni numero 7. Kytketään pinniin 7 vihreä LED ja 220 ohmin vastus sarjaan ledin kanssa, kuten alla oleva kuva näyttää:
Jotta kaikkea ei tarvitse koodata uusiksi, muokataan vain avattua esimerkkisketsiä vastaamaan tehtyä kytkentää. Lisätään #define -määrityksellä ohjelmaan vakio LED, jonka arvoksi annetaan numero 7 eli pinninumero ja muokataan koodia asettamaan tämä vakio päälle ja pois:
4.3 Kytkimen luku ja ledin sytytys
Seuraavaksi luetaan Arduino Minimaan liitetty kytkimen tila ja sytytetään tai sammutetaan LED sen mukaan. Kytketään painonappi levylle niin, että kun kytkintä painetaan niin käyttöjännitteen maa eli GND kytkeytyy porttipinniin. Ylösvetovastusta ei tässä tarvita, vaan kytketään Arduinon sisäinen ylösvetovastus aktiiviseksi koodilla.
Tehdään kytkentä, missä painonappi, tai on/off kytkin liitetään porttipinniin 6. Piirikaaviossa kytkentä näyttää nyt alla olevan kuvan mukaiselta...
... ja käytännön kytkennässä tältä.
Seuraavaksi kirjoitetaan koodi, missä tarkkaillaan onko nappia painettu ja signaloidaan se ledillä:
Nyt aina kun nappia painetaan, niin LED syttyy ja näin ollen olemme ohjanneet porttipinnin päälle tai pois päältä. Voit kokeilla muuttaa ledin tai kytkimen paikkaa eri IO-pinneihin ja muuttaa koodia sen mukaisesti.
HUOM! Koodit ovat tarkoituksella kuvia, jotta copy-pasteaminen olisi hankalempaa. Oppiminen tehostuu yleensä silloin, kun joutuu itsekin vähän vaivaa näkemään.