Ohjelmoinnissa yksi oleellinen konsepti ovat muuttujat. Muuttujat ovat tapa tallentaa esimerkiksi numeerisia arvoja ohjelman käyttöön. Muuttujien määrittäminen arduino ohjelmoinnissa tapahtuu esimerkiksi seuraavasti:

int muuttuja = 100;

int määrittelee muuttujan tyypin. muuttuja on tässä esimerkissä muuttujan nimi. Muuttujan nimi on vapaasti valittavissa. = 100 asettaa muuttujalle alkuarvon. Huomaathan, että kuten funktiokutsu, tämäkin toiminto päättyy puolipisteeseen ;.

Arduino-ohjelmoinnissa on muuttujan tyyppi on aina määriteltävä. Tässä vaiheessa esitellään kolme erilaista muuttujatyyppiä:

Muuttujan arvo voi nimensä mukaisesti muuttua ohjelman suorituksen aikana. Muuttujan arvon voi muuttaa koodilla:

muuttuja = 42;

Kuten huomataan, muuttujan arvon asettaminen muistuttaa uuden muuttujan luomista, lukuunottamatta muuttujan tyypin määrittelyä.

Muuttujia voi myös käyttää matemaattisissa toimituksissa ja niiden arvoja tallentaa toisiin muuttujiin.

int muuttuja = 100;
int toinenMuuttuja = muuttuja + 50; // Tämän jälkeen toinenMuuttujan arvo on 150

Muuttujia voidaan myös käyttää niiden itsensä muokkaamiseen

int muuttuja = 100;
muuttuja = muuttuja - 20; // Tämän jälkeen muuttujan arvo on 80

Suurin hyöty on muuttujien käyttämisestä funktioiden parametreina

int tauko = 1000;
delay(tauko); // Odotetaan 1000 millisekuntia

Huomioita!

Muuttujien nimeämistä koskee muutama erikoissääntö

Tehtävä 3

Tässä esimerkissä delay funktion pituus on määritelty muuttujassa tauko

https://wokwi.com/projects/401578519885705217

Harjoitus 3.1

Miten nyt saadaan LED valon vilkkuminen nopeutettua tai hidastettua?

Harjoitus 3.2

Kuinka LED-valoSaadaan vilkkumaan nopeammin? Entä hitaammin.

Sivun alkuun:

Arduino vasta-alkajille

Sisällys

Perusteet

pinMode ja digitalWrite

Loop ja delay

Muuttujat

Ehtolauseet

INPUT ja digitalRead

While toistorakenne

Palautelomake

© 2024 Eero Prittinen

Muuttujien näkyvyys

Muuttujien näkyvyys koodissa riippuu siitä, missä kyseinen muuttuja on määritelty. Edellisessä esimerkissä muuttuja oli määritelty koodin alussa, eli kyseessä on niinsanotusti globaali muuttuja. Muuttuja voidaan myös määritellä funktion sisällä, jolloin se on käyttettävissä vain kyseisessä funktiossa. Näinollen tämäkin koodi toimisi:

void loop() {
	int tauko = 1000;
	digitalWrite(0, HIGH);
  delay(tauko);
  digitalWrite(0, LOW);
  delay(tauko);
}

Harjoitus 3.3

Pohdi, miksi seuraava koodi ei toimi. Kuinka sen saisi toimimaan?

void setup() {
	pinMode(0, OUTPUT);
	int tauko = 1000;
}

void loop() {
	digitalWrite(0, HIGH);
  delay(tauko);
  digitalWrite(0, LOW);
  delay(tauko);
}

Harjoitus 3.4

Tämän esimerkin liikennevaloissa kaikki valot ovat päällä yhtä pitkään. Miten käyttäisit määriteltyjä muuttujia yhdessä delay funktioiden kanssa, jotta valot olisivat päällä eripituisia aikoja?

https://wokwi.com/projects/405997287258007553

Seuraavana vuorossa Ehtolauseet

Ehtolauseet