Tekstitykset
Muuttujista
Johdanto
Tässä harjoituksessa pääset käyttämään muuttujia (variable) kytkimiä käyttäessäsi. Muuttujat ovat ohjelmoinnissa eräänlaisia tietovarastoja. Niihin voidaan laittaa muistiin jokin arvo, jotta sinun ei tarvitse muistaa sitä ulkoa! Voit katsoa johdannoksi alla olevan videon. Siinä selitetään hieman muuttujien toimintaa ohjelmoinnissa.
What is a Variable? | Programming Basics | Computer Science Instruction
Tarvikkeet
Mehackit boardin (tai Arduinon), USB-johdon, koekytkentälevyn ja johtimien lisäksi tarvitset seuraavat komponentit.
Osa | Kuva | Kuvaus |
---|---|---|
LED x 3 | Pidempi jalka (kuvassa mutkallinen) eli anodi + -napaan eli Arduinon porttiin. Lyhyempi jalka eli katodi miinus-napaan eli maahan. | |
Vastus 330 Ω x 3 | Vastus vastustaa sähkövirran kulkua. Vastuksen arvo mitataan ohmeissa (Ω) ja ilmoitetaan komponentissa eri värisinä raitoina (tässä oranssi, oranssi, ruskea ja kulta). | |
Painonappi x 3 | Mehackit Maker Kitin painonappi on valkoinen, ei ruskea. |
Virtapiiri
- Kytke nappi porttiin 2 ja maahan.
- Kytke ledin pidempi jalka porttiin 5 ja lyhyempi jalka vastuksen kautta maahan.
Ohjelman tavoite
Tällä kertaa tavoitteena on harjoitella muuttujien käyttöä ohjelmoinnissa. Näet seuraavilla sivuilla, mitä tarkemmin tapahtuu. Tarvitset seuraavia ohjelmointityökaluja, joista yksi on tällä kurssilla täysin uusi.
Tutut komennot:
- pinMode(portti, asetus):Käytetään setup-metodin sisällä portin asettamiseksi tiettyyn tilaan. Kytkimet tulee aina asettaa tilaan INPUT_PULLUP.
- digitalRead(portti): Lukee digitaalisen portin tilan.
- digitalWrite(portti, tila): Portin asettaminen päälle tai pois päältä.
- Serial.begin: Serial-liikenteen käynnistäminen
- Serial.println: Arvojen tulostaminen Serial Monitoriin.
Uudet komennot:
- int-muuttujan luominen: int-tyypin muuttujaan voidaan tallentaa kokonaislukuarvoja.
- NOT-opraattori (!): Huutomerkkiä käyttämällä voidaan vaihtaa arvo päinvastaiseksi.
Ohjelmointi 1/3
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(5, OUTPUT);
Serial.begin(9600);
}
void loop() {
int buttonState = digitalRead(2);
Serial.println(buttonState);
delay(100);
}
Mitä teksti "int" tarkoittaa ohjelmassa?
Ohjelmointi 2/3
Muuttujaa luodessa kirjoitetaan siis aina ensin muuttujan tyyppi ja sen jälkeen muuttujan nimi. Tällä kurssilla muuttujan tyyppi on käytännössä aina int (integer), mikä merkitsee kokonaislukumuuttujaa. Muuttujan nimen taas voit valita itse.
Mikäli muuttuja luodaan setup-metodissa, voi siihen viitata vain setup-metodissa, ja mikäli muuttuja luodaan loop-metodissa, voidaan siihen viitata vain loop-metodissa. Muuttujan voi kuitenkin luoda “globaalisti” setup- ja loop-metodien ulkopuolella, jolloin siihen voi viitata missä tahansa. Alla olevassa koodissa muuttuja “buttonState” luodaan setup- ja loop-metodien ulkopuolella, jolloin siihen voidaan viitata helposti myös loop-metodissa kirjoittamatta enää erikseen “int”..
int buttonState = 0;
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(5, OUTPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(2);
Serial.println(buttonState);
delay(1000);
}
int counter = 3;
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(5, OUTPUT);
Serial.begin(9600);
}
void loop() {
counter = counter + 3;
Serial.println(counter);
delay(1000);
}
Mikä on muuttujan "counter" arvo kolmen loop-kierroksen jälkeen?
Ohjelmointi 3/3
Harjoitellaan vielä hiukan lisää muuttujien käyttöä. Jos tiedetään, että kokonaislukumuuttujan arvo on 0 tai 1 ja haluamme vaihtaa arvon päinvastaiseksi, on meille hyötyä seuraavasta merkinnästä.
buttonState = !buttonState;
Huutomerkkiä käyttämällä käännetään arvo päinvastaiseksi: nollasta tulee yksi ja ykkösestä nolla.
int buttonState = 0;
int ledState = 0;
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(5, OUTPUT);
Serial.begin(9600);
}
void loop() {
Serial.println(buttonState);
buttonState = digitalRead(2);
if(buttonState == 0){
ledState = !ledState;
}
digitalWrite(5, ledState);
}
Mitä Arduino-prorotyypissäsi tapahtuu?