Led vilkkumaan

Johdanto

Tässä harjoituksessa vilkutetaan lediä ennalta määritetyssä tahdissa. Vaikka asia saattaa vaikuttaa yksinkertaiselta, niin ledeillä saa aikaan lopulta vaikka mitä! Alla olevassa videossa esitellään Arduinon avulla tehtyä 8 x 8 led-kuutiota.

Vect: How to Build Your Own 8x8x8 LED Cube With an Arduino Uno

Tiesitkö että...
Ledit eli hohtodiodit ovat halventuneet ja yleistyneet todella paljon viime vuosina. Nykyään valmistetaan paljon esimerkiksi led-kotivalaisimia ja led-televisoita.

Tarvikkeet

Tähän harjoitukseen tarvitset samoja tarvikkeita kuin edellisessä harjoituksessa - ne vain kytketään hieman eri lailla!

OsaKuvaKuvaus
Mehackit-board (tai Arduino UNO)
USB-johto (A/B)Tietokoneella kirjoitettu ohjelma lähetetään Arduinolle USB-johtoa pitkin. Johdon kautta Arduino saa myös virtaa.
KytkentäjohtojaOhuita, erivärisiä kytkentäjohtoja tarvitaan tällä kurssilla runsaasti!
Koekytkentälevy
2 x LEDPidempi jalka (kuvassa mutkallinen) eli anodi + -napaan eli Arduinon porttiin. Lyhyempi jalka eli katodi miinus-napaan eli maahan.
Vastus 330 ΩVastus vastustaa sähkövirran kulkua. Vastuksen arvo mitataan ohmeissa (Ω) ja ilmoitetaan komponentissa eri värisinä raitoina (tässä oranssi, oranssi, ruskea ja kulta).
PainonappiMehackit Maker Kitin painonappi on valkoinen, ei ruskea.

Virtapiiri

Nyt osat kannattaa kytkeä tiiviisti kuten kuvassa, lähelle kytkentäalustan laitaa - luvun viimeisessä harjoituksessa tehdään peli, jonka kytkennät rakennetaan tämän rinnalle.

  • Kytke nappi porttiin 2: Arduino täytyy myöhemmin ohjelmoida tarkkailemaan, onko tämä nappi pohjassa vai ei.
  • Kytke led porttiin 5: Arduino täytyy myöhemmin ohjelmoida syöttämään tähän porttiin jännitettä, jolloin LED menee päälle ja pois.
  • Kytke ledin toinen jalka vastuksen kautta maahan. Vastus rajoittaa virtaa, jottei Arduinon portti mene rikki.
  • 5V porttiin ei tarvitse nyt kytkeä mitään, koska portit 2 ja 5 syöttävät komponenteille jännitettä.

Ohjelman tavoite

Porttiin 5 kiinnitetty ledi syttyy ja sammuu - nappi ohjelmoidaan toimintaan vasta seuraavassa vaiheessa.

Tarvittavat komennot

Allaolevat linkit johtavat Arduinon sivuille, referenssiin. Siellä kuvataan kaikki Arduinon komennot käyttöesimerkkeineen. Referenssiin kannattaa tutustua, se on todella hyvä tietolähde!

Ohjelmointi 1/2

Ohjelmointi 1/2

Avaa Arduino IDE. Edessäsi on tämä näkymä:

setup() ja loop() ovat funktioita jotka pitävät sisällään aaltosulkeiden ({ ja }) väliin merkatun 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.

Tehtävä
Kirjoita seuraava koodi. Liitä Arduino usb-johdolla tietokoneeseen ja klikkaa Arduino IDE:n upload-painiketta (nuoli oikealla ylhäällä). Jos koodi ei lataudu, tarkista “Tools” valikosta “Board” ja “Port” asetukset ja yritä uudestaan.
void setup() {
 pinMode(5, OUTPUT);
}

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

Koodissa tapahtuu nyt seuraavaa:

  • Mikrokontrollerille kerrotaan, että porttiin 5 on kytketty laite jolle täytyy antaa virtaa - pinMode(5, OUTPUT); Tämä tehdään vain kerran, joten komento voidaan antaa setup-funktion sisällä.

  • Porttiin 5 laitetaan virta päälle komennolla digitalWrite(5, HIGH);


Miten setup- ja loop-komennot eroavat toisistaan?

Ohjelmointi 2/2

Tehtävä
Kirjoita seuraava koodi ja lataa sen Arduinolle. Muuta sitten delay-arvoja, ja tarkkaile mitä tapahtuu. Vastaa lopuksi sivun alalaidassa olevaan monivalintaan.
void setup() {
 pinMode(5, OUTPUT);
}

void loop() {
  digitalWrite(5, HIGH);
  delay(1000); 
  digitalWrite(5, LOW); 
  delay(1000);
} 

Mitä tekee komento delay(1000);?

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!
  • Komentojen perässä on oltava puolipisteet (;), jotta koodi toimii. Kokeile mitä tapahtuu, jos jätät puolipilkun kirjoittamatta. Editorin konsoliin ilmestyy virheilmoitus: “error: expected ‘;’ before ‘}’ token”. Virheilmoituksia saattaa olla aluksi haastava tulkita, mutta niistä löytyy hyviä vihjeitä. Edellinen virheilmoitus kertoo, että ennen rivillä kahdeksan olevaa aaltosulkua } pitäisi olla puolipiste.