Ohjelma 1
Monien
ohjelmointiohjelmien ensimmäinen esimerkki on printata ruutuun ”Hello World”.
Tässä tapauksessa tuota voisi vastata LEDin vilkutus. Useimmissa Arduinoissa on
digitaalipinnissä 13 LED, jota voidaan hyväksi käyttää alussa. Myös kontolleri
voi saada tehosyöttönsä USB-kaapelin välityksellä tietokoneesta. Kun tehon
tarve kasvaa valitaan muita ratkaisuja.
const int Con_LED_13 = 13; // LED pinnissä 13
const int Con_Viive_ms = 500; // LEDin paloaika millisekuntia
void setup() {
pinMode(Con_LED_13, OUTPUT);
}
void loop() {
digitalWrite(Con_LED_13, HIGH);
delay(Con_Viive_ms);
digitalWrite(Con_LED_13, LOW);
delay(Con_Viive_ms * 3 / 10);
}
const int Con_LED_13 = 13;
// LED pinnissä 13
Yhden rivin kommentti
merkitään // alulla. Kun käytetään useamman rinvin kommenttia, aloitetaan rivi
/* ja kun tarvittava teksi on kirjoitettu, päätetään kommentti */
Kommentit ovat
esiarvoisen tärkeitä ohjelman myöhempää tarkastelua varten. Tietokone ei niistä
välitä, vaan ne ovat ihmistä varten. Minulla on tapana aloittaa nimet
muuttujatyypillä, mutta kukin löytää itselleen sopivan tavan. Tässä const = constant = vakio. Tämä ei siis
muutu ohjelman käynnin aikana. Tässä lauseessa vakion tyyppi on kokonaisluku Int = integer = kokonaisluku. Tällä
viitataan pinniin 13, missä levyn oma LED sijaitsee. Nimen Con_LED_13
alkuarvoksi annetaan vakio 13. Vakioita on todellinen syy nimetä ja käyttää,
sillä ensinnäkin ne eivät kuluta työmuistia ja toisekseen, kun käytetään nimeä
useammassa paikassa ohjelmaa, tarvitsee muutos tehdä vain yhteen paikkaan, eli
tähän määrittelyyn ja alkuarvotukseen. Tämä helpottaa oleellisesti ohjelman
testausta.
const int Con_Viive_ms = 500; // LEDin paloaika millisekuntia
Ohjelmalause päätty aina
puolipisteeseen (;). Sen jälkeen tässä on kommentti. Tässä määritellään
kokonaislukuvakio, minkä olen nimennyt: Con_Viive_ms.
Sille on annettu alkuarvoksi 500 ms, eli puoli sekuntia.
void setup() { pinMode(Con_LED_13, OUTPUT); }
Tämä asetusosa
suoritetaan ainoastaan kerran ohjelman käynnistyessä. Lauseryhmä alkaa aina
kaarisulkeella ( { ) ja päättyy myös kaarisulkeeseen ( } ). Tässä tosin on vain
yksi lause, millä pinni 13 määritellään lähdöksi (output).
void loop() {
digitalWrite(Con_LED_13, HIGH); delay(Con_Viive_ms);
digitalWrite(Con_LED_13, LOW); delay(Con_Viive_ms * 3 / 10); }
Myös pääohjelman void loop() lauseryhmä alkaa kaarisulkeella
( { ) ja myös päättyy kaarisulkeeseen ( } ). Näiden välissä on varsinainen
toiminta: digitaalinen kirjoituskäsky sytyttää LED, viive 500 ms, käsky
sammuttaa LED ja viive. Koska tässä on kokonaisluku, pääsee parempaan
tarkkuuteen ensin kertomalla luku suuremmaksi ja sen jälkeen jakamaan
pienemmäksi. Tarkkuuteen voi vaikuttaa myös käyttämällä kertoimina kymmeniä,
satoja tai tuhansia.
Ohjelma 2
Jos valoaika ja pimeäaika
ovat samanpituisia, voi ohjelma olla hiukan yksinkertaisempi. Tällöin tarvitaan
boolean muuttuja, mikä voi saada vain
kaksi arvoa true (1) tai false(0). Huutomerkki ( ! ) on NOT, eli
lauseessa Bol_LED_13 = !Bol_LED_13; muuttujan
tila vaihtuu aina lauseen suorituksessa. Muuttunut arvo kirjoitetaan LEDille
edellisessä lauseessa.
const int Con_LED_13 = 13;
const int Con_Viive_ms = 300;
boolean Bol_LED_13 = true;
void setup() {
pinMode(Con_LED_13, OUTPUT);
}
void loop() {
delay(Con_Viive_ms);
digitalWrite(Con_LED_13, Bol_LED_13);
Bol_LED_13 = !Bol_LED_13;
}
Ei kommentteja:
Lähetä kommentti