Pastoviai daryti tą patį veiksmą būtų nuobodu, tam ir sugalvojo žmonės robotus – atlikti pastovų rutininį darbą. Kelis kartus iš eilės pasikarojantis veiksmas vadinamas ciklu. Yra metų ciklas – pavasaris, vasara, ruduo, žiema – ir vėl iš naujo. Yra savaitės ciklas – pimadienis, antradienis… sekmadienis ir vėl iš naujo pirmadienis. Ciklo sąvoka gyvenime mus supa visur. Ciklą programuotojai naudoja kai reikia pakartoti veiksmus ar veiksmų seką kelis kartus. Naudojami sąlyginiai ciklo sakiniai – ciklas vykdomas kol atitinka mūsų nurodytą sąlygą – arba fiksuoto kiekio – kai žinome kiek kartų reikės pakartoti veiksmą.
Žiūrim į Šviesaforo programytę. Ten jau yra "amžinas ciklas"
// amžinas ciklas
void loop() {
//programos tekstas
}
Taip taip, tai "amžinas ciklas", programos kodas bus vykdomas kol mūsų kontroleris gaus maitinimą. Kur dar galime savo programoje panaudoti ciklą? Skaitome programos scenarijų: "…Žalias … 4 kartus sumirksi – mirksėjimo trukmė – 0,5 sekundės, užgęsta…". Kam mums rašyti 4 kartus pasikartojančią komandą, kai ją galime padaryti cikle 🙂 Tam naudosime ciklą for – kai komandas reikia kartoti žinomą kiekį.
Sintaksė:
for (inicializacija; sąlyga; žingsnis;) {komandos, atliekamos cikle}
inicializacija – pradinės reikšmės nustatymas, jis atliekamas tik 1 kartą – prasidėjus ciklui
sąlyga – ciklas atliekamas kol tenkinama sąlyga – tikrinama kiekvieno ciklo žingsnio metu
žingsnis – reikšmės kitimo dydis
Mūsų atvėju – mirksėti turi 4 kartus, todėl
for (int i=1; i<5; i++){
// programos tekstas
}
int i=1 – pradinės reikšmės nustatymas
i<5 – ciklas vyks kol i reikšmė bus mažesnė už 5 – i ciklui vykdant įgaus reikšmes 1, 2, 3, 4, 5. Beja sąlygą galima užrašyti ir i<=4
i++ – kiekvieno ciklo žingsnio metu i reikšmė padidės 1 vienetu
Ir štai jau modifikuota mūsų programa:
/* Šviesoforas, mokomoji programa
programos ver. 3
ciklas for */
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
// mirksėjimas
for (int i=1; i<5; i++){
digitalWrite(Zalias, HIGH); // įjungiam žalią
delay(500); // laukiam 0,5 sekundes
digitalWrite(Zalias, LOW); // išjungiam žalią
delay (500); // laukiam 0,5 sekundes
}
digitalWrite(Geltonas, HIGH); // įjungiam geltoną
delay(1000); // laukiam 1 sekundę
digitalWrite(Geltonas, LOW); // išjungiam geltoną
}
Pasikartojantį darbą ikėlėme į ciklą, o ką jeigu mes norime, kad mirksėtų ne 4 o 8 kartus? tereikės pakeisti tik 1 (!) skaičiuką:
// mirksėjimas
for (int i=1; i<9; i++){
digitalWrite(Zalias, HIGH); // įjungiam žalią
delay(500); // laukiam 0,5 sekundes
digitalWrite(Zalias, LOW); // išjungiam žalią
delay (500); // laukiam 0,5 sekundes
}

Arduino programavimo pradžiamokslis
[…] Pamokų sąrašas […]