keskiviikko 6. huhtikuuta 2016

Ohjelmoinnin alkuun

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