Šviesoforas. II dalis. Kintamieji

   Mokam mirksėti 3 LED'ais. Šaunu. Šviesoforo programos 1-oje versijoje mes šviesos diodus jungėme prie 2-4 kontrolerio kojų. O įsivaizduokit situaciją, kad jos jau užimtos kitais darbais ir mums reikia jungti prie 9-11 kojų. Perrašinėti visą programą? Gerai jeigu programos kodo yra tik 50 eilučių, o jei kodas sudarytas is kokio 200 ar viso 1000 eilučių – užsimušimas ir dar klaidų tikimybė nereali.

   Taigi – kintamieji. Kintamieji skirti saugoti programos duomenis ir kaip jau sako pats jų pavadinimas – tie duomenys gali keistis pagal mūsų nuožiūrą. Arduino programavimas sukurtas C/C++ programavimo kalbos pagrindu, todėl ir kintamieji apsirašo ir naudojami panašiai. Yra 14 kintamųjų tipai:  boolean, char, byte, int, unsigned int, word, long, unsigned long, float, double, string (eilutė), String (Objektas), array, void. Apie visus juos pakalbėsime vėliau, dabar mus domina tik sveiko tipo kintamasis int.

   int (iš ang. kalbos sutrumpinimas integer – sveikas skaičius) – dažniausiai naudojamas kintamasis, kuris gali įgyti reikšmes nuo -32 768 iki 32 767 (nuo -2^15 iki 2^15-1). Kiekvienas kintamasis privalo turėti savo unikalų vardą ir apsirašyti. Taip pat vėliau pakalbėsim apie kintamųjų galiojimo sritis bei kaip pakeisti kintamojo tipą, bet tai vėliau…

   Kintamojo vardą sudaro raidės, skaičiai bei specialūs simboliai. Vardų sukūrimui galioja taisyklės, kai kurias aptarsiu iš karto:

1. vardas negali būti toks pat kaip rezervuoti žodžiai ar funkcijos (pvz. true, int, for ir t.t.)
2. vardas turi prasidėti raide (pvz. Pirmas, p1, p_1)
3. skiriasi didžiosios ir mažosios raidės (pvz. pirmas nelygu Pirmas)

   Nebijokit, Arduino kompiliatorius iš kart perspės jeigu Jūs netinkamai pasirinksite kintamojo vardą, bet kintamojo vardo parinkimas dažnai atstoja visą eilutę komentarų, todėl vardus pasirinkite pagal turinį ir norimą gauti rezultatą.

/* Šviesoforas, mokomoji programa
   programos ver. 2
   kintamųjų naudojimas */
int Raudonas = 2;
int Geltonas = 3;
int Zalias = 4;

void setup() {                
  // skaitmeninių išėjimų nustatymas
  pinMode(Raudonas, OUTPUT);
  pinMode(Geltonas, OUTPUT);
  pinMode(Zalias, OUTPUT);
}

// amžinas ciklas
void loop() {
  digitalWrite(Raudonas, HIGH);   // įjungiam raudoną
  delay(7000);             // laukiam 7 sekundes

  digitalWrite(Geltonas, HIGH);   // įjungiam geltoną
  delay(1000);             // laukiam 1 sekundę
  digitalWrite(Raudonas, LOW);    // išjungiam raudoną
  digitalWrite(Geltonas, LOW);    // išjungiam geltoną

  digitalWrite(Zalias, HIGH);   // įjungiam žalią
  delay(4000);             // laukiam 4 sekundes
  digitalWrite(Zalias, LOW);    // išjungiam žalią
  
  delay (500);             // laukiam 0,5 sekundes
  digitalWrite(Zalias, HIGH);   // įjungiam žalią
  delay(500);              // laukiam 0,5 sekundes
  digitalWrite(Zalias, LOW);    // išjungiam žalią  
  delay (500);             // laukiam 0,5 sekundes
  digitalWrite(Zalias, HIGH);   // įjungiam žalią
  delay(500);              // laukiam 10 sekundziu
  digitalWrite(Zalias, LOW);    // išjungiam žalią  
  delay (500);             // laukiam 0,5 sekundes
  digitalWrite(Zalias, HIGH);   // įjungiam žalią
  delay(500);              // laukiam 10 sekundziu
  digitalWrite(Zalias, LOW);    // išjungiam žalią  
  delay (500);             // laukiam 0,5 sekundes
  digitalWrite(Zalias, HIGH);   // įjungiam žalią
  delay(500);              // laukiam 10 sekundziu
  digitalWrite(Zalias, LOW);    // išjungiam žalią  
    
  digitalWrite(Geltonas, HIGH);   // įjungiam geltoną
  delay(1000);             // laukiam 1 sekundę
  digitalWrite(Geltonas, LOW);    // išjungiam geltoną
}

   Teisingai parinkus kintamųjų vardus komentarų programoje beveik ir nereikia. Taip pat pakeitus diodų pajungimo vietą (pvz. 9-10-11 kojos) mums reikės pakeisti tik 3 (!) eilutes:

/* Šviesoforas, mokomoji programa
   programos ver. 2
   kintamųjų naudojimas */
int Raudonas = 9;
int Geltonas = 10;
int Zalias = 11;

Gražu, patogu ir paprasta 🙂

Vienas komentartas

    Arduino programavimo pradžiamokslis

    […] Pamokų sąrašas […]

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *

*
*

Time limit is exhausted. Please reload CAPTCHA.