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 […]