Arduino shart bo'yicha dasturning boshiga boradi. Arduino tsikllari. Dastur matnidagi holat va tarmoqlanish

Dizayn uchun jingalak qavslar ichiga olingan gaplar blokini takrorlash uchun ishlatiladi. O'sish hisoblagichi odatda tsiklni oshirish va tugatish uchun ishlatiladi. Operator uchun Har qanday takroriy faoliyat uchun mos keladi va ko'pincha ma'lumotlar/chiqish yig'ish massivlari bilan birgalikda ishlatiladi.

Loop sarlavhasi uchun uch qismdan iborat:

uchun (ishga tushirish ; holat ; oshirish) (operatorlar siklda bajariladi)

Initializatsiya birinchi va faqat bir marta amalga oshiriladi. Har safar tsiklda shart tekshiriladi, agar u rost bo'lsa, operatorlar bloki va o'sish bajariladi, keyin shart yana tekshiriladi. Shartning mantiqiy qiymati noto'g'ri bo'lsa, tsikl tugaydi.

Misol

// PWM pin yordamida LEDni xiralashtirish int PWMpin = 10; // 10 pinli 470 ohm qarshilik bilan ketma-ket LED void setup() ( // hech qanday sozlash shart emas) void loop() ( for (int i=0; i)<= 255; i++){ analogWrite(PWMpin, i); delay(10); } }

Velosiped uchun C looplarga qaraganda ancha moslashuvchan uchun boshqa dasturlash tillarida, masalan, BASIC. Har qanday yoki uchta sarlavha elementi qoldirilishi mumkin, ammo nuqta-vergul kerak. Shuningdek, tsiklni ishga tushirish, shartli va o'sish iboralari mustaqil o'zgaruvchilarga ega bo'lgan har qanday to'g'ri C bayonoti bo'lishi mumkin va har qanday C ma'lumotlar turidan, shu jumladan floatlardan foydalanishi mumkin. Bu tsikl uchun odatiy holdir uchun operator turlari ba'zi nostandart muammolarga dasturiy yechimni taqdim etish imkonini beradi.

Masalan, sikl hisoblagich operatorida ko'paytirishdan foydalanish logarifmik progressiyani yaratishga imkon beradi:

For(int x = 2; x< 100; x = x * 1.5){ println(x); }

Yaratilgan: 2,3,4,6,9,13,19,28,42,63,94

Yana bir misol, bitta sikl yordamida signal darajasini LEDga silliq ravishda kamaytirish yoki oshirish uchun:

Void loop())( int x = 1; for (int i = 0; i > -1; i = i + x)( analogWrite(PWMpin, i); if (i == 255) x = -1; / / maksimal kechikishda kommutatsiyani boshqarish (10); ) )

Dizayn uchun jingalak qavslar ichiga olingan gaplar blokini takrorlash uchun ishlatiladi. O'sish hisoblagichi odatda tsiklni oshirish va tugatish uchun ishlatiladi. Operator uchun Har qanday takroriy faoliyat uchun mos keladi va ko'pincha ma'lumotlar/chiqish yig'ish massivlari bilan birgalikda ishlatiladi.

Loop sarlavhasi uchun uch qismdan iborat:

uchun (ishga tushirish ; holat ; oshirish) (operatorlar siklda bajariladi)

Initializatsiya birinchi va faqat bir marta amalga oshiriladi. Har safar tsiklda shart tekshiriladi, agar u rost bo'lsa, operatorlar bloki va o'sish bajariladi, keyin shart yana tekshiriladi. Shartning mantiqiy qiymati noto'g'ri bo'lsa, tsikl tugaydi.

Misol
// PWM pin yordamida LEDni xiralashtirish int PWMpin = 10; // 10 pinli 470 ohm rezistorli seriyali LED void setup() ( // hech qanday sozlash shart emas) void loop() ( for (int i=0; i)<= 255; i++){ analogWrite(PWMpin, i); delay(10); } }

Velosiped uchun C looplarga qaraganda ancha moslashuvchan uchun boshqa dasturlash tillarida, masalan, BASIC. Har qanday yoki uchta sarlavha elementi qoldirilishi mumkin, ammo nuqta-vergul kerak. Shuningdek, tsiklni ishga tushirish, shartli va o'sish iboralari mustaqil o'zgaruvchilarga ega bo'lgan har qanday to'g'ri C bayonoti bo'lishi mumkin va har qanday C ma'lumotlar turidan, shu jumladan floatlardan foydalanishi mumkin. Bu tsikl uchun odatiy holdir uchun operator turlari ba'zi nostandart muammolarga dasturiy yechimni taqdim etish imkonini beradi.

Masalan, sikl hisoblagich operatorida ko'paytirishdan foydalanish logarifmik progressiyani yaratishga imkon beradi:

For(int x = 2; x< 100; x = x * 1.5){ println(x); }

Yaratilgan: 2,3,4,6,9,13,19,28,42,63,94

Yana bir misol, bitta sikl yordamida signal darajasini LEDga silliq ravishda kamaytirish yoki oshirish uchun:

Void loop() ( int x = 1; for (int i = 0; i > -1; i = i + x)( analogWrite(PWMpin, i); if (i == 255) x = -1; // maksimal kechikishda kommutatsiya nazorati (10); ) )

", biz kontrollerning ishlashini tashkil qilish uchun "for" tsiklidan qanday foydalanishni o'rgandik. Ushbu turdagi pastadir hamma joyda qo'llaniladi va "ko'chadan ishlashga bo'lgan ehtiyoj" ni qoplaydi. Biroq, loopning yana bir turi mavjud - "while". Bu for loopdan yaxshiroq emas, u faqat turli tamoyillardan foydalanadi.

Ko'pgina hollarda siz ikkita turdagi pastadirlardan qaysi birini ishlatishni tanlashingiz mumkin. Biz foydalanuvchi kerakli ma'lumotlarni kiritmaguncha dasturni to'xtatib turish uchun "while" dan foydalandik. Ushbu darsda biz misol sifatida Arduino platformasidan foydalangan holda ushbu tsikl qanday ishlashini batafsil ko'rib chiqamiz.

Keling, 2 ta LEDdan iborat sxema bilan ishlashni davom ettiramiz.

Bundan tashqari, biz 14-darsda yakunlagan kod bilan ishlashni davom ettiramiz.

O'tmishga qaytish: boshqaruvchi foydalanuvchidan ma'lumotlarni so'raydi, kiritishni kutadi va natijada olingan qiymatlarni o'zgaruvchilarga tayinlaydi blinkNumber Green Va blinkNumberRed. Bu foydalanuvchiga 2 LEDning har biri necha marta miltillashini nazorat qilish imkonini beradi.

Dasturchining dunyoqarashini kengaytirish uchun bir xil vazifalarni bajarish uchun ikki turdagi halqalardan foydalanishni o'rganishga arziydi va kelajakda siz u yoki bu turga hamdardlik ko'rsatishingiz mumkin.

Keling, bu qanday ishlashini aniqlaymiz:

int z= 1; // o'zgaruvchini e'lon qiling va unga 1 qiymatini bering

esa (z<=10) { //запускаем цикл esa

Serial. println(z); //o'zgaruvchining joriy qiymatini chiqarishz ketma-ket port orqali

z= z+1 // o'zgaruvchining qiymatini oshirishztomonidan 1

) // tsiklni tugatish

Qavslar ichida tasvirlangan "shart" rost bo'lsa, while tsikli buyruqlarni bajarishda davom etadi. Yuqoridagi misolda, z 10 dan kichik yoki teng bo'lsa, sikl buyruqlarni bajarishda davom etadi. Tsiklning tanasi 2 ta buyruqni bajaradi:

  • O'zgaruvchining qiymatini ketma-ket port orqali chiqarish;
  • O'zgaruvchining qiymatini 1 ga oshirish (ilmiy ravishda o'sish deb ataladi).

O'zgaruvchining qiymatini oshirish orqali dastur oxir-oqibat tsikldan chiqadi. Agar biz ushbu qatorni ko'rsatishni unutib qo'yganimizni bir soniya tasavvur qilsak yoki biron bir nosozlik yuzaga kelsa, dastur mamnuniyat bilan tsiklga o'tadi (boshqacha aytganda, u muzlab qoladi).

Loop o'z ishini shartning haqiqatini tekshirishdan boshlaydi. Agar z 10 dan kichik yoki teng bo'lsa, u holda dastur siklni ishga tushiradi. Keyin shart yana tekshiriladi va hokazo. O'zgaruvchining qiymati z = 11 ga yetganda, shart endi to'g'ri bo'lmaydi. Dastur siklni bajarmaydi va tsikl jingalak qavsdan keyin darhol keyingi qatorga o'tadi.

Nazariya yetarli, keling, amaliyotga o‘tamiz. Manba kodidagi for sikllarini while sikllariga almashtiramiz.

FOR sikli tomonidan bajariladigan miltillovchi:

uchun (int i = 1; i<= blinkNumberGreen; i++) // ishga tushirish tsikluchun

{

Serial. chop etish("Yashil yondi");

Serial.println(i);

digitalWrite (yashil LED, HIGH); //yoqish; ishga tushirish yashil Yorug'lik chiqaradigan diod

kechikish (timeOnGreenLed); //kutamiz

digitalWrite (yashil LED, LOW); //o'chirib qo'yish yashil Yorug'lik chiqaradigan diod

kechikish (timeOffGreenLed); //kutamiz

}

WHILE siklida miltillovchi:

int i=1; // o'zgaruvchini e'lon qiling va unga 1 qiymatini bering

esa (ya'ni<= blinkNumberGreen)

{ // ishga tushirish tsiklesa

Serial.print("Yashil miltilladi «);

Serial.println(i);

digitalWrite (yashil LED, HIGH); //yoqish; ishga tushirish yashil Yorug'lik chiqaradigan diod

kechikish (timeOnGreenLed); //kutamiz

digitalWrite (yashil LED, LOW); //o'chirib qo'yish yashil Yorug'lik chiqaradigan diod

kechikish (timeOffGreenLed); //kutamiz

i= i+1 //o‘zgaruvchining qiymatini 1 ga oshiring

}

Dasturni saqlang va proshivkani kontrollerga yuklang. Keling, natijani ko'rib chiqaylik.

Ko'rsatmalar yordamida tsikllar uchun Va esa Arduino asosidagi C++ tilining eng muhim tuzilmalaridan biridir. Ular mutlaqo har bir eskizda topiladi, hatto siz buni bilmasangiz ham. Ushbu maqolada biz tsikllarni batafsil ko'rib chiqamiz, for va while o'rtasidagi farq nima, ularning yordami bilan dastur yozishni qanday soddalashtirishingiz va qanday xatolarga yo'l qo'ymaslik kerakligini bilib olamiz.

Agar siz hali ham boshlang'ich dasturchi bo'lsangiz va loop nima ekanligini va nima uchun kerakligini tushunishni istasangiz, batafsil tavsif bilan ushbu maqolaning keyingi bo'limiga qarang.

WHILE operatori C++ va Arduino tillarida bir xil buyruqlarni ixtiyoriy ravishda bir necha marta takrorlash uchun ishlatiladi. FOR sikli bilan solishtirganda WHILE sikli oddiyroq ko‘rinadi; u odatda o‘zgaruvchidagi takrorlanishlar sonini sanashimiz shart bo‘lmagan hollarda qo‘llaniladi, lekin kodni biror narsa o‘zgarmaguncha yoki biror hodisa ro‘y berguncha takrorlash kerak bo‘ladi.

WHILE sintaksisi

esa(<условие или список условий>)
{
<программный блок, который будет повторяться>
}

Mantiqiy qiymatni qaytaradigan har qanday til konstruktsiyasidan shart sifatida foydalanish mumkin. Shartlar taqqoslash amallari, funksiyalar, konstantalar, o'zgaruvchilar bo'lishi mumkin. Arduino-dagi boshqa mantiqiy operatsiyalarda bo'lgani kabi, noldan boshqa har qanday qiymat haqiqiy, nol - noto'g'ri deb qabul qilinadi.

// Cheksiz sikl while(true)( Serial.println("Waiting..."); ) // checkSignal() funksiyasi qiymati o'zgarmaguncha ishlaydigan tsikl while(!checkSignal())( Serial.println ("Kutilmoqda..."); )

Esda tutingki, while operatori blokni jingalak qavslar bilan bloklamasdan ham foydalanish mumkin, bu holda sikldan keyin duch kelgan birinchi buyruq takrorlanadi. Jingalak qavslarsiz foydalanish juda tavsiya etilmaydi, chunki bu holatda xato qilish juda oson. Misol:

While(true) Serial.print("Uzilish kutilmoqda"); kechikish (1000);

Bunday holda, yozuv cheksiz tsiklda pauzalarsiz ko'rsatiladi, chunki delay(1000) buyrug'i takrorlanmaydi. Bunday xatolarni qo'lga olish uchun ko'p vaqt sarflashingiz mumkin - jingalak qavsni ishlatish ancha oson.

Foydalanish misoli while tsikli

Ko'pincha while qaysidir voqeani kutish uchun ishlatiladi. Masalan, Serial ob'ektining ishga tayyorligi.

Serial.begin(9600); while (!Serial) ( ; // Ba'zi Arduino platalari ketma-ket port bo'sh bo'lguncha kutishingizni talab qiladi)

UART orqali tashqi qurilmalardan belgi kelishini kutish misoli:

While(Serial.available())( int byteInput = Seria.read(); // Boshqa ba'zi harakatlar)

Bunday holda, Serial.available() nolga teng bo'lmagan qiymatni qaytarsa, biz qiymatlarni o'qiymiz. Buferdagi barcha ma'lumotlar tugagach, tsikl to'xtaydi.

Arduino-da FOR tsikli

FOR tsiklida biz nafaqat chegara shartlarini belgilash, balki hisoblagich uchun o'zgaruvchini darhol aniqlash va har bir iteratsiyada uning qiymatlari qanday o'zgarishini ko'rsatish imkoniyatiga egamiz.

FOR tsikli sintaksisi

Bu erda dizayn biroz murakkabroq bo'ladi:
uchun (<начальное значение счетчика>;<условие продолжения выполнения цикла>;<изменение значения счетчика на каждом шаге>){
<список_команд>
}

Eng oddiy misol:

For(int i=5;i<10;i++){ // Конструкция «3 в одном» pinMode(i, OUTPUT); }

Biz darhol o'zgaruvchini yaratdik, uni ishga tushirdik va har bir tsikl oxirida hisoblagich qiymatini bittaga oshirish kerakligini ko'rsatdik. Va hamma narsa - endi siz tsikl ichidagi o'zgaruvchidan foydalanishingiz mumkin.

O'zgaruvchan qadam boshqacha bo'lishi mumkin. Mana misollar:

  • for(int i=0; i<10; i=i+2) // Шаг 2
  • for(int i=0; i<10; i+=2) // Аналогичен предыдущему
  • for(int i=10; i>0; i–) // Orqaga qaytish – 10 dan 1 gacha

while tsiklini bajaring

Ba'zi hollarda biz tsiklni shunday tashkil qilishimiz kerakki, blokning ko'rsatmalari kamida bir marta bajariladi va keyin tekshirish amalga oshiriladi. Bunday algoritmlar uchun do while construct dan foydalanishingiz mumkin. Misol:

Do ( Serial.println("Ishlayotgan"); ) while (checkSomething());

Loopning ushbu versiyasi hech qanday qiyinchilik tug'dirmaydi - biz shunchaki shartlar bilan blokni pastga siljitdik, shuning uchun do operatoridan keyin jingalak qavslar ichidagi barcha tarkib birinchi tekshiruvdan oldin bajariladi.

Davom etish va buzish bayonotlari

Vaziyatni tekshirish blokiga o'tishni kutmasdan, tsikl bloki ichidagi tsiklning bajarilishini zudlik bilan to'xtatish kerak bo'lgan holatlar mavjud. Buning uchun siz operatordan foydalanishingiz mumkin tanaffus:

While (to'g'ri) (if' (agar (checkSomething()) ( break; ) )

Agar biz shunchaki joriy iteratsiyaning borishini to'xtatmoqchi bo'lsak, lekin tsikldan chiqmasdan, shartni tekshirish blokiga o'tmoqchi bo'lsak, unda operatordan foydalanishimiz kerak. davom eting:

Holbuki (to'g'ri) (agar (checkSomething()) (davom etish; ) )

Continue va break operatorlari FOR va WHILE sikllarining barcha variantlari bilan ishlatilishi mumkin.

Arduino-da o'rnatilgan tsikllar

Ilgaklarning har qanday variantlari bir-biri bilan osongina birlashtirilib, ichki o'rnatilgan tuzilmalarni yaratadi. "Ustlab qo'yilgan" halqa blokida aniqlangan o'zgaruvchilar ichki qismda mavjud bo'ladi. Ushbu turdagi tsiklning eng keng tarqalgan namunasi ikki o'lchovli massivlarni kesib o'tishdir. Quyidagi misolda biz qo'sh tsikldan foydalanamiz: birinchisi satrlar bo'ylab takrorlanadi (i o'zgaruvchisi), ikkinchisi ichki o'rnatilgan, biz arr o'zgaruvchisida aniqlagan massivning ustunlari (j o'zgaruvchisi) bo'ylab aylanadi.

Int arr; void setup() ( uchun (int i = 0; i< 10; i++) { for (int j = 0; j < 3; j++) { arr[i][j] = i * j; Serial.println(arr[i][j]); } } }

Tsikllar haqida ko'proq ma'lumot

Agar siz ilmoqlar bilan hech qachon ishlamagan bo'lsangiz, keling, nazariya olamiga bir oz sho'ng'ib olaylik va halqalar nima ekanligini va bu sirli til konstruktsiyalari nima uchun kerakligini aniqlaylik.

Nima uchun bizga halqa kerak?

Aslida, tsiklning asosiy vazifasi bir xil til konstruktsiyalarini bir necha marta takrorlashdir. Bu ehtiyoj deyarli har bir dasturda paydo bo'ladi va, albatta, birorta ham Arduino eskizi halqasiz bajarolmaydi - loop() funksiyasi ham cheksiz tsiklda chaqiriladi.

Keling, quyidagi misolni ko'rib chiqaylik. Arduino platasiga 5 dan 9 gacha bo'lgan pinlarga ulangan 5 ta LEDni bir vaqtning o'zida quvvat bilan ta'minlashingiz kerak. Buning eng aniq varianti ketma-ket beshta ko'rsatmalarni joylashtirish bo'ladi:

digitalWrite (5, YUKOR);

digitalWrite (6, YUQORI);

digitalWrite(7, YUQORI);

digitalWrite(8, YUKOR);

digitalWrite(9, YUQORI);

Hozircha bunday harakatning xavfliligi masalasiga e'tibor bermaylik, chunki bir vaqtning o'zida bunday ko'p sonli LEDlarning kiritilishi taxtaning quvvat pallasida ortib borayotgan yukni keltirib chiqaradi. Hozir biz uchun asosiy narsa shundaki, biz besh qator kod yaratdik, ularning har biri boshqalardan faqat bitta raqam bilan farq qiladi. Ushbu yondashuv quyidagi kamchiliklarga ega:

  • Har qanday o'zgarish bilan siz bir vaqtning o'zida ko'plab qatorlarga o'zgartirishlar kiritishingiz kerak bo'ladi. Misol uchun, agar biz LEDlarni 2 dan 6 gacha pinlarga o'tkazishimiz yoki uni yoqish o'rniga kuchlanishni o'chirishimiz kerak bo'lsa, biz kodga 5 ta o'zgartirish kiritishimiz kerak bo'ladi. Yana ko'rsatmalar va o'zgarishlar bo'lsa-chi?
  • Ko'p sonli shunga o'xshash ko'rsatmalarga ega bo'lgan katta kodni o'qish noqulay va yoqimsiz. Beshta bir xil chiziq juda qo'rqinchli emas. Ammo iflos kodning odati oxir-oqibat ro'yxatda o'nlab yoki yuzlab qo'shimcha sahifalarga olib keladi, bu sizni ham, hamkasblaringizni ham tushkunlikka soladi.
  • Deyarli bir xil ko'rsatmalarni "nusxalash va joylashtirish" jarayonida siz osongina xato qilishingiz mumkin, masalan, pin raqamini o'zgartirishni unutib qo'yishingiz mumkin: digitalWrite(5, HIGH); digitalWrite (5, YUKOR);
  • Intervyu oluvchiga ushbu kodni ko'rsatib, har qanday oddiy dasturiy ta'minot kompaniyasida intervyuda osongina muvaffaqiyatsiz bo'lishingiz mumkin.

Bularning barchasidan xulosa qilishimiz mumkinki, bir xil satrlarni qayta-qayta ishlatish deyarli har doim oldini olish va ilmoqlar bilan almashtirilishi kerak. Bundan tashqari, ko'p hollarda tsiklsiz qilish mumkin emas, ularni hech narsa almashtira olmaydi. Dastur ishlayotgan vaqtda kodning necha marta takrorlanishini o'zgartira olmaysiz. Misol uchun, har bir elementni qayta ishlashingiz kerak ma'lumotlar massivi, tashqi qurilmalardan olingan. Siz hech qachon qancha ma'lumot bo'lishini, qayta ishlash necha marta takrorlanishini oldindan aytib berolmaysiz va shuning uchun maqolani yozish paytida kerakli miqdordagi ko'rsatmalarni kirita olmaysiz.

Va bu erda tsikllar bizning yordamimizga keladi.

Sintaksis qoidalari

Arduino-da aylanish maxsus dastur bloki bo'lib, u dasturni bajarish jarayonida ma'lum bir necha marta chaqiriladi. Ushbu blokda biz chaqiriladigan buyruqlarning o'zini va boshqaruvchi ularni necha marta chaqirish kerakligini aniqlaydigan qoidalarni tasvirlaymiz.

Yuqoridagi misolimizda biz boshqaruvchiga quyidagilarni aytishimiz mumkin:

Buyruqni takrorlang digitalWrite 5 marta

Robot dasturchilar bilan ideal dunyoda bu etarli bo'lar edi, lekin biz C++ da kompyuter bilan gaplashayotganimiz uchun biz ushbu iborani ushbu tilga tarjima qilishimiz kerak:

Buyruqni takrorlang – kontrollerga while yoki for looplari bilan qiziq narsa boshlanishini bildiruvchi maxsus ko'rsatmalardan foydalanishingiz kerak

digitalWrite – xuddi shunday qoldiring, lekin bir marta yozing va jingalak qavslar ichiga oling. PIN raqamlari bilan nima qilish kerak - quyida.

5 marta - buning uchun hisoblagichdan foydalaning, bu har bir takrorlash bilan ortadi. Blokning boshida (yoki oxirida) taqqoslash operatsiyasidan foydalanib, ushbu hisoblagichning qiymatini chegara qiymati bilan (bu holda 5) solishtirishingiz mumkin.

Keling, while iborasi bilan shunday "tarjima qilingan" tsikl buyrug'ining misolini ko'rib chiqaylik:

Int hisoblagichi = 0; // Hisoblagich qiymatini saqlaydigan o'zgaruvchi // Qavslar ichidagi shart rost bo'lguncha protsessordan konstruksiyani jingalak qavslar ichida takrorlashni so'raymiz. // Bizning holatda, hisoblagich bizning hisoblagichimiz, 5 - chegaraviy qiymat, shart - hisoblagich qiymati 5 dan kichik. // Lekin biz butunlay boshqacha mantiqiy operatorlarni belgilashimiz mumkin while (hisoblagich).< 5) { digitaWrite(5, HIGH); // Будем включать светодиод counter++; // Увеличиваем значение счетчика } // Дойдя до сюда, исполняющий процессор переместится в начало блока и опять займется проверкой условий. Если условия вернут истину, команды в блоке между { и } выполнятся еще раз. Если условие не выполнится - процессор переместится к концу блока и пойдет дальше. Этот цикл больше его не заинтересует.

Berilgan kodda xatolikni sezganlar uchun biz beshni beramiz va tsikl blokini boshqacha yozamiz:

while(counter< 5) { // Вот теперь мы будем включать разные светодиоды, с 5 (0+5) по 9 (4+5) digitalWrite(counter + 5, HIGH); counter++; }

Xuddi shu natijaga FOR tsikli yordamida erishish mumkin:

For(int counter =0; counter<5; counter ++){ digitalWrite(counter+5, HIGH); }

Ko'rib turganingizdek, bu holda biz hisoblagich bilan barcha kerakli operatsiyalarni darhol bitta FOR ko'rsatmasiga joylashtiramiz - agar siz kerakli miqdorni hisoblashingiz kerak bo'lsa, bu ancha qulayroqdir.

Looplardan foydalanish qoidalari haqida batafsil ma'lumotni ushbu maqolaning tegishli bo'limlarida olishingiz mumkin.

Xulosa

Ushbu maqolada biz Arduino tilining juda muhim konstruksiyalarini ko'rib chiqdik: FOR va WHILE tsikllari. Siz ushbu operatorlarni deyarli har qanday murakkab eskizda topishingiz mumkin, chunki tsikllarsiz ma'lumotlar bilan ko'p operatsiyalarni amalga oshirish mumkin emas. Looplar sintaksisida hech qanday murakkab narsa yo'q - siz ularga osongina ko'nikishingiz va ularni loyihalaringizda faol ishlatishingiz mumkin.

/ /

Operator uchun

Dizayn uchun jingalak qavslar ichiga olingan gaplar blokini takrorlash uchun ishlatiladi. O'sish hisoblagichi odatda tsiklni oshirish va tugatish uchun ishlatiladi. Operator uchun Har qanday takroriy faoliyat uchun mos keladi va ko'pincha ma'lumotlar/chiqish yig'ish massivlari bilan birgalikda ishlatiladi.

Loop sarlavhasi uchun uch qismdan iborat:

uchun (ishga tushirish; holat; oshirish) (operatorlar siklda bajariladi)

Initializatsiya birinchi va faqat bir marta amalga oshiriladi. Har safar tsiklda shart tekshiriladi, agar u rost bo'lsa, operatorlar bloki va o'sish bajariladi, keyin shart yana tekshiriladi. Shartning mantiqiy qiymati noto'g'ri bo'lsa, tsikl tugaydi.

Misol

// PWM pin yordamida LEDni xiralashtirish int PWMpin = 10; // 10 pinli 470 ohm qarshilik bilan ketma-ket LED void setup() ( // hech qanday sozlash shart emas) void loop() ( for (int i=0; i)<= 255; i++){ analogWrite(PWMpin, i); delay(10); } }

Velosiped uchun C looplarga qaraganda ancha moslashuvchan uchun boshqa dasturlash tillarida, masalan, BASIC. Har qanday yoki uchta sarlavha elementi qoldirilishi mumkin, ammo nuqta-vergul kerak. Shuningdek, tsiklni ishga tushirish, shartli va o'sish iboralari mustaqil o'zgaruvchilarga ega bo'lgan har qanday to'g'ri C bayonoti bo'lishi mumkin va har qanday C ma'lumotlar turidan, shu jumladan floatlardan foydalanishi mumkin. Bu tsikl uchun odatiy holdir uchun operator turlari ba'zi nostandart muammolarga dasturiy yechimni taqdim etish imkonini beradi.

Masalan, sikl hisoblagich operatorida ko'paytirishdan foydalanish logarifmik progressiyani yaratishga imkon beradi:

For(int x = 2; x< 100; x = x * 1.5){ println(x); }

Yaratilgan: 2,3,4,6,9,13,19,28,42,63,94

Yana bir misol, bitta sikl yordamida signal darajasini LEDga silliq ravishda kamaytirish yoki oshirish uchun:

Void loop())( int x = 1; for (int i = 0; i > -1; i = i + x)( analogWrite(PWMpin, i); if (i == 255) x = -1; / / maksimal kechikishda kommutatsiyani boshqarish (10); ) )