Internet Derazalar Android
Kengaytirmoq

Arduino funktsiyalari katalogi. Arduino - boshqaruvchi operatorlar

Ushbu simulyator xrome brauzerida eng yaxshi ishlaydi
Keling, ARDUININA-ga diqqat bilan qaraylik.

Arduino ne. katta kompyuterQaysi tashqi zanjirlar ulanishi mumkin. ATMEGA 328P ARDUINO BEOda ishlatilgan
Bu bortdagi eng katta chip. Ushbu chip o'z xotirasida saqlanadigan dasturlarni amalga oshiradi. Dasturni USB orqali yuklab olishingiz mumkin arduino-dan foydalanish. IDR. USB port Shuningdek, Arduino kuchini ham taqdim etadi.

Alohida elektr ulagichi mavjud. Kengashda 3V va 3.3V, quvvat olish uchun kerak bo'lgan ikkita natijani ishlab chiqadi turli xil qurilmalar. Shuningdek, siz GND deb belgilangan kontaktlarni topasiz, bu Yerning xulosalari (Yer 0b). Arduino platformasi, shuningdek, tashqi tugunlarga ulangan va yuqori yoki past (yoki o'chirilgan) bo'lgan 14 dan 13 gacha bo'lgan 14 raqamli xulosalar (pinlar) mavjud. Ushbu kontaktlar chiqish yoki kirish kabi ishlashi mumkin, i.e. Ular ba'zi ma'lumotlarni uzatishlari va tashqi qurilmalarni boshqarishlari yoki qurilmalardan ma'lumotlarni olishlari mumkin. Kengashda quyidagi xulosalar A0 A5 ko'rsatilgan. Bu ma'lumotlarni olish mumkin bo'lgan analog inputsiyalar turli xil sensorlar. Bu, ayniqsa, harorat kabi ma'lum bir qatorni o'lchashingiz kerak bo'lganida ayniqsa qulaydir. Analog inputsiyalari bor qo'shimcha funktsiyalaralohida ishlatilishi mumkin.

Qanday ishlatish erkak to'lovi.

Vazirlar kabineti buyumlarni vaqtincha ulash uchun kerak, qurilmani birgalikda to'plashdan oldin, qurilma qanday ishlashini tekshiring.
Quyidagi barcha misollar partiyaga yig'iladi, shunda siz diagrammaga tezda o'zgartirish kiritishingiz va ehtiyot qismlarni muzlatmasdan, qismlarni qayta ishlatishingiz uchun.

Siz joylar va simlarni kiritishingiz mumkin bo'lgan samosg'idagi teshiklar qatorlari bor. Ushbu teshiklarning ba'zilari elektr bilan bir-biriga bog'langan.

Ikki yuqori va pastki qatorlar butun taxtali qatorda ulanadi. Ushbu saflarda quvvatni sxemada boqish uchun ishlatiladi. Bu 5V yoki 3.3V bo'lishi mumkin, ammo har qanday holatda ham, siz 5V va GND-ni axlat kartasida ko'rsatilgandek ulanadi. Ba'zan ushbu qator ulanishlar taxtaning o'rtasida to'xtatilishi mumkin, agar kerak bo'lsa, ularni rasmda ko'rsatilgandek ulashingiz mumkin.








Kengash o'rtasida joylashgan qolgan teshiklar beshta teshikka birlashtiriladi. Ular sxema tafsilotlarini ulash uchun ishlatiladi.


Bizning mikrokontrollerimizga ulanadigan birinchi narsa bu LED. Rasmda elektr ulanishlari aylanmasi ko'rsatilgan.

Nega sizga sxemada rezistorsga kerak? Bunday holda, u LED orqali o'tadigan oqimni cheklaydi. Har bir LED ma'lum bir oqim uchun mo'ljallangan bo'lsa, agar bu oqroq bo'lsa, LED muvaffaqiyatsiz bo'ladi. Nominal qiymat oh-qonun yordamida rezistor bo'lish kerakligini aniqlash. Bilmaydigan yoki unutmaganlar uchun Ohmning so'zlariga ko'ra, hozirgi kuchlanishdan oqimning chiziqli qaramligi borligini aytadi. Bular ijozatchiga ko'proq kuchlanishimizga duch kelsak, u orqali ko'proq oqadi.
V \u003d i * r
Qayerda V.- Rezeratorning farqi
I.- rezistik orqali joriy
R.- Topishga qarshilik.
Birinchidan, biz kuchlanishni rezistoraga o'rganishimiz kerak. Ko'pchilik siz foydalanadigan 3mm yoki 5mm bo'lgan 5 mm bo'lgan 3B ish kuchlanishiga ega. Bu shuni anglatadiki, biz yo'lda 5-3 \u003d 2b-ni to'lashimiz kerak.

Keyin biz rezister orqali o'tgan o'tni hisoblaymiz.
Eng ko'p va 5mm LED, 20MA oqimida to'liq yorqin porlaydi. Hozirgi amaldan ko'proq ko'proq, va hozirgi pastki kuchi hech qanday zarar etkazmasdan ularning yorqinligini pasaytiradi.

Shunday qilib, biz 5V zanjiriga 20mning oqimi bor, shunda 20MA oqimi mavjud. Rassomning bir zanjiriga kiritilgan barcha qismlar ham 20MA oqimi bo'ladi.
Biz olamiz
2b \u003d 20 m * r
2b \u003d 0.02a * r
R \u003d 100 ohm

100 ohm bu minimal qarshilik, biroz ko'proq foydalanish yaxshidir, chunki LED lar xususiyatlarning bir xil o'zgarishi.
Ichida bu misol Ishlatilgan rezist 220 ohm. Muallifning ko'plari juda ko'p: ko'z qisish:.

Rasmning xulosasidan biri bo'lgan tarzda LED lamchaning o'rtasida teshikka joylashtiring. Rassomning ikkinchi uchi 5V dan, ikkinchi LED chiqishi GND bilan bog'liq. LED yonib turishi kerak.

E'tibor bering, LEDni qanday ulashda farq bor. Joriy oqimlar uzunroq mahsulotdan qisqaroqgacha. Diagrammada bu haqiqat uchburchak yo'naltirilgan boshqa tomondan oqadigan oqadi. LEDni burishga urinib ko'ring va u porlamasligini ko'rasiz.

Ammo sizga qanday qilib reporgarni ulashingiz, umuman farq yo'q. Siz uni o'girishingiz yoki LEDning boshqa chiqish qismiga ulanishga harakat qilishingiz mumkin, bu sxemaning ishlashiga ta'sir qilmaydi. U hali ham oqim orqali oqimni cheklaydi.

Anatomiya Arduino eskiz.

Arduino qo'ng'iroqlari diskining dasturlari. Ular ikkita asosiy funktsiyadan iborat. Funktsiya sozlash; o'rnatish. va funktsiya Pastadir.
Ushbu xususiyat ichida siz barcha asosiy sozlamalarni ko'rsatasiz. Kutubxonalarni ulash va ishga tushirish bo'yicha qanday xulosalar chiqaradi, o'zgargichlarni boshlaydi. Funktsiya Sozlash; o'rnatish () Dastur boshlanganda eskiz paytida faqat bir marta boshlanadi.
Bu keyin bajarilgan asosiy funktsiya sozlash; o'rnatish (). Aslida, bu dasturning o'zi. Ushbu xususiyat kuchni o'chirmaguningizcha cheksiz bo'ladi.

Arduino chiroqlari olib ketdi



Shu misolda biz LED diagrammasini Arduino-ning raqamli xulosalaridan biriga ulaymiz va dasturdan foydalanib, uni o'chirib, uni o'chirib qo'yamiz, shuningdek bir nechta foydali xususiyatlarni topasiz.

Ushbu xususiyat ishlatiladi sozlash; o'rnatish () Dasturning bir qismi va kirish paytida foydalanadigan xulosalarni boshlashga xizmat qiladi (KIRITISH) yoki tashqarida (Chiqish). Siz uni mos ravishda o'rnatguningizcha, PINA-dan ma'lumotlarni o'qiy olmaysiz yoki yoza olmaysiz pinmone.. Ushbu xususiyat ikkita dalil mavjud: pinnumum- Bu siz foydalanadigan pina sonidir.

Rejim.- Chunki PIN ishlaydi. Kirish haqida (KIRITISH) yoki tashqarida (Chiqish). LEDni rad etish uchun biz signal berishimiz kerak Dan Arduino. Buning uchun biz PIN-kodni bosamiz.
- Ushbu xususiyat davlatni o'rnatish uchun ishlatiladi. (Davlat) Pina. (Pinnumum). Ikkita asosiy shtatlar mavjud (umumiy 3), bitta narsa Baland, Qarag'ay 5V bo'ladi, ikkinchisi Past. Va Pinea 0V bo'ladi. Bu shuni anglatadiki, biz yuqori darajadagi belgilash uchun LED-dagi Pinea-dagi divanni yoritishi kerakligini anglatadi. Baland.

Kechiktirish. Bu dasturning ishini Msekda ko'rsatilgan muddatga kechiktirishga xizmat qiladi.
Quyida LED yoritgichini keltirib chiqaradigan kod.
// Blink Stedpin \u003d 7; // ARDUININI (LEDPIN, chiqindi) ning chiqishi () ni o'rnatadigan pinani o'rnatish (Digitpin, yuqori); // LED LEST DESTIN (1000); // kechikish 1000 mseek (1 sekund) digitalwrite (LEDPIN, past); // kechiktirilgan LED (1000) ni o'chiring (1000); // Kutish 1 sekundni o'chiring)

Kichik kodlar.
"//" bilan boshlanadigan qatorlar Ushbu sharhlar ARDUININ ularga e'tibor bermaydi.
Agar siz ularni unutgan bo'lsangiz, unda barcha buyruqlar vergul bilan tugaydi, keyin xato xabarini oling.

lEDPIN.- Bu o'zgaruvchan. O'zgaruvchilar qiymatlarni saqlash dasturlarida qo'llaniladi. Ushbu misolda o'zgaruvchan lEDPIN. 7-o'rinni egallaydi, bu Pina Arduino soni. Dasturda Arduino o'zgaruvchi bilan satr bilan uchrashganda lEDPIN. U ilgari biz ko'rsatgan qiymatidan foydalanadi.
Shunday qilib yozuv pinmode (LETPIN, chiqish) Shunga o'xshash yozuvlar pinmode (7, chiqishi).
Ammo birinchi holatda, o'zgaruvchini o'zgartirish kifoya qiladi va ikkinchisida u ishlatilgan va ikkinchi qatorda siz o'zgaruvchini o'zgartirish uchun siz har bir jamoada o'zgarishlar qilishingiz kerak.

Birinchi satr o'zgaruvchining turini ko'rsatadi. Arduino dasturlashda har doim o'zgaruvchi turlarini e'lon qilish juda muhimdir. Buni bilish uchun etarlicha Int. Salbiy va ijobiy raqamlarni e'lon qiladi.
Quyida eskizning simulyatsiyasi. Sxemaning ishlashini ko'rish uchun boshlang.

Kutilganidek, LED chiqib, bir soniya yonadi. Bu qanday ishlashini ko'rish uchun kechikishni o'zgartirishga harakat qiling.

Bir nechta liklarni boshqarish.

Ushbu misolda siz bir nechta LEDlarni qanday boshqarishni o'rganasiz. Buning uchun taxtaga yana 3 ta LED ni qo'ying va ularni tikanga va quyida ko'rsatilgandek Arduinoning chiqishlariga ulang.

O'z navbatida LEDlarni yoqish va o'chirish uchun. Siz shunga o'xshash dastur yozishingiz kerak:
// ko'p qirrali militsioner state1pin \u003d 4; Int LED2PIN \u003d 5; Int LED3PIN \u003d 6; Int LED4PIN \u003d 7; VOLD sozlash (// pinmode chiqishi (LED1PIN, chiqish); PINMode (LED3PIN, chiqish); BoDMode (LED4PIN, chiqish); Nisfe Loop (Digit1pin) ); // xush kelibsiz LED kechikish (1000); // kechiktirilganligi (LED1PIN, past); // kechikish 1 sekund // boshqa 3 sekund digital yozish uchun bir xil ( LED2PIN, Yuqori); // LED Digit (1000); // Kechay olish (1000); // 1 sekund digital yozish (LED3PIN, Yuqori); // Slash LED kechiktirish (1000); // 1 sekund digitalwrite (LED3PIN, past); // LED4PIN, yuqori); // LED LED LED (1000); // 1 sekund digital yozishni kechiktirish (LED4PIN, past); // kechikish LED (1000); // 1 sekundni kechiktirish)

Ushbu dastur mukammal ishlaydi, ammo bu eng oqilona echim emas. Kodni o'zgartirilishi kerak. Dastur ishlash uchun biz nomlangan dizaynni qo'llashimiz uchun.
Bir xil harakatni bir necha marta takrorlashingiz kerak bo'lganda tsikllar qulay. Yuqorida ushlab turilgan kodda biz chiziqlarni takrorlaymiz

Digitalwrite (LED4PIN, yuqori); Kechiktirish (1000); Digitalwrite (LED4PIN, past); Kechiktirish (1000);
Ilovada to'liq eskiz kodi (Yuklab olish: 1384)

Yorqinlikni sozlash

Ba'zida siz dasturdagi LED ning yorqinligini o'zgartirishingiz kerak. Bu buyruq yordamida amalga oshirilishi mumkin. analoglash () . Ushbu buyruq tezda ushbu siltani ko'rmaydigan LED LEDni o'chiradi va o'chadi. Agar vaqtning yarmi yoqilgan bo'lsa va yarim o'chadi, bu uning yorqinligining yarmini porlayotganday ko'rinadi. Bunga PULS modulyatsiyasi (PWM yoki PWM ingliz tilida) deb nomlanadi. PWM juda ko'p qo'llaniladi, chunki u raqamli kod yordamida "analog" komponentlari tomonidan boshqarilishi mumkin. ARDUININING HAMMA XAVFSIZLIGI BU MA'LUMOTLAR UChUN MUVOFIQ YO'Q. Faqat bunday belgilar chizilganligi haqida faqat bu xulosalar ~ ". Siz buni 3,5,6,9,10,11 gacha chiqishning yonida ko'rasiz.
O'zingizning LED fayllaringizdan birini PWM xulosalaridan biri bilan ulang (muallif 9-yil. Endi LEDning miltillashini boshlang, lekin avval buyruqni o'zgartiring digitalwrite () ustida analoglash (). analoglash () Bu ikkita dalil bor: birinchi bo'lib ishlab chiqarish raqami va 2-sonli (0-255) ning ikkinchi qiymati, LED, shuningdek, ularning yoritilishining yorug'ligi va elektr motorlarining aylanish tezligi bo'ladi. Quyida LED ning turli xil yorqinligi uchun namuna kodi.
// indppinning yorqinligini o'zgartiring \u003d // Ushbu natijaga (PINMOD (LEDPIN, chiqishi) (LEDPIN, chiqishi) uchun (Letpin, 2 (LETHPIN, 255); / / To'liq yorqinlik (255/255 \u003d 1); // 1 sekund digitalyrit (1000); // 1 sek, 191-sonli pauza qilishni o'chiring; // 3/4 yorqinligi (191/255 ~ \u003d 0.75) kechikish (1000); 1 sekund digitant (1000) ni o'chiring (1000); // 1 soniya analogwrite ( LEDPIN, 127); // yarim yorqinlik (127/255 ~ \u003d//000); // kechiktirilgan LED (1000) ni o'chiring (1000); // 1 sek. Analogwrite (LEDPIN, 63); // chorak (1000) kechikish (1000); // 1 sekund digitalni to'xtatib turish (1000); // kechiktirilgan LED (1000); // 1 s pauza qilish)

Jamoadagi PWM qiymatini o'zgartirishga harakat qiling analoglash ()Uning yorqinligiga qanday ta'sir qilishini ko'rish.
Keyinchalik, yorqinlikni muloyimlik bilan to'g'rilay olishni o'rganasiz. Siz, albatta, 255 marta kodni nusxalashingiz mumkin
Analog (LEDPIN, yorqinlik); Kechiktirish (5); // qisqa kechikish darajasi \u003d yorqinlik + 1;
Ammo, siz o'zingizni tushunasiz - bu amaliy bo'lmaydi. Oldindan ishlatiladigan tsiklni ishlatish yaxshidir.
Quyidagi misol ikkita tsikldan foydalanadi, biri 255 dan 0 gacha yorqinlikni kamaytiradi
uchun (int yorqinligi \u003d 0; 0; yorqinligi -) (analog, yorqinlik); kechikish (5);)
kechikish (5) O'sish sur'atini pasaytirish va yorqinlikni kamaytirish uchun ishlatiladi 5 * 256 \u003d 1280 ms \u003d 1.28 sek.
Birinchi qatorda ishlatilgan " yorqinlik -"Yorqinlik qiymati 1 ga kamayishi uchun har safar tsikl takrorlanadi. Iltimos, tsikl uzoq vaqt ishlashini unutmang yorqinlik\u003e \u003d 0. Belgini o'zgartirish orqali > Belgida >= Biz yorqinlik oralig'ida 0 ga aylandik. Ushbu eskiz quyida modellashtirilgan. // yorqinlikni buzing \u003d // VOLDMOD (LEDPIN, chiqishi) (// pinternity) (//) uchun (/ 255) 0; yorqinligi \u003d 0; yorqinligi -) (Analogin (LEDPIN, yorqinlik) (1000). // Biz 1 sekund // uchun (sek yorqinligi \u003d 255; yorqinlik\u003e \u003d 0; Analogin (LEDPIN, yorqinlik); kechikish (5); // biz 1 sekund kutmoqdamiz).
Bu juda yaxshi emas, lekin g'oya tushunarli.

RGB LED va Arduino

RGB LED, aslida bitta holatda har xil rangdagi uchta rangda.

Shu jumladan turli xil yorqinliklar bilan turli xil LED, siz birlashtirishingiz va turli xil ranglarni olishingiz mumkin. Arduino uchun yorqinlik darajasi 256, siz 256 ^ 3 \u003d 16581375 mumkin bo'lgan ranglarni olasiz. Albatta, ular kamroq bo'lurlar.
Boshqasi, biz umumiy katoddan foydalanamiz. Ular. Uchta bosh murabbiylar katodlar tomonidan bir xulosaga kelishadi. Ushbu xulosani GND chiqishi bilan bog'laymiz. Qolgan xulosalar, cheklovchi turkumlar orqali, PWM xulosalariga ulangan bo'lishi kerak. Muallif 9-11 xulosalarini ishlatgan. Bu tartibda uni alohida-alohida boshqarish mumkin. Birinchi eskizda har bir boshni alohida yoqish kerakligi ko'rsatilgan.



// RGB LED - test // pin ulanishlari int qizil \u003d 9; int yashil \u003d 10; Int ko'k \u003d 11; VOLD sozlash () (qizil, chiqish); PINMode (ko'k, chiqadigan); qizil LED Digitalwrite (qizil, yuqori); kechikish ( 500); Digitalwrite (qizil, past); // Yashil, yuqori); DigitalWrite (500); Digitalwrite (yashil, past); kechikish (500); // yoqish / Moviy digitalwrite LED (ko'k, yuqori); kechikish (500); Digitalwrite (ko'k, past); kechikish (500);););

Quyidagi misol buyruqlardan foydalanadi analoglash () Va LED uchun turli xil tasodifiy yorqinlik qiymatlarini olish. Siz tasodifiy o'zgaradigan turli xil ranglarni ko'rasiz.
// RGB LED - Tasodifiy ranglar // pin ulanishlari int qizil \u003d 9; int yashil \u003d 10; Int ko'k \u003d 11; VOLD sozlash () (qizil, chiqish); pinmose (ko'k, chiqadigan);) xol yoki tasodifiy analog (256) (256)); analogwrite ( Ko'k, tasodifiy (256)); analog yozish (yashil, tasodifiy (256)); kechikish (1000); // bir soniya kuting)

Tasodifiy (256)- Qaytish tasodifiy raqam 0 dan 255 gacha.
Ranglarning qizil rangdagi o'tishlarini qizildan yashilgacha yashil ranggacha, keyin ko'k, qizil, yashil va boshqalarni namoyish etadigan biriktirilgan eskiz faylida. (Yuklab olish: 381)
Ko'rsatma misol, ammo takrorlanadigan kod mavjud. Siz o'zingiz yozib kodni soddalashtirishingiz mumkin yordamchi funktsiyabir rangni boshqasiga silliq ravishda o'zgartiradi.
U shunday ko'rinadi: (Yuklab olish: 414)
Keling, qismdagi funktsiyani aniqlashni ko'rib chiqaylik. Funktsiya deyiladi fader. Va ikkita tortishuvga ega. Har bir argument vergul bilan ajratilgan va funktsiyani aniqlash funktsiyasining birinchi qatorida e'lon qilingan bir tur mavjud: fader (Int Color1, int ranglar2). Ko'ryapsizmi, ikkala dalil ham e'lon qilingan int.va ularga tayinlangan nomlar rang1. va rang2. Funktsiyani aniqlash uchun shartli o'zgaruvchilar sifatida. Bo'shliq. Funktsiya hech qanday qiymatni qaytarmaydi, shunchaki buyruqlarni bajaradi. Agar ko'payish natijasini qaytarib olgan funktsiyani yozish kerak bo'lsa, u quyidagicha ko'rinadi:
ST multiplier (Int raqami, int raqami) (int mahsuloti) (ST mahsuloti \u003d raqami)
Iltimos, qanday qilib turni e'lon qilganimizni qayd eting int. Buning o'rniga qaytish qiymati sifatida
bo'shliq..
Oldingi eskizda ishlatgan jamoalar funktsiya ichida, faqat xulosalar sonini faqat almashtirildi rang1. va rang2.. Funktsiya deyiladi fader., uning dalillari hisoblab chiqiladi rang1 \u003d qizil va color2 \u003d Yashil.. Maqsadlardan foydalangan holda to'liq eskizda (Yuklab olish: 313)

Tugmasi

Keyingi eskizda odatda ochilgan kontaktlar bilan funktsiya bilan ishlamay qoladi.


Bu shuni anglatadiki, tugma bosilmaganda, oqim u orqali o'tmaydi va bo'shatishdan keyin tugma uning asl holatiga qaytadi.
Diagrammada, tugmadan tashqari, rezistor ishlatiladi. Bunday holda, u oqimni cheklamaydi va "yuqoriga" ni 0b gacha (GND) bosib chiqaradi. Ular. Arduino chiqishi bosilmagan bo'lsa-da, u ulangan holda past darajaga ega bo'ladi. 10-chi comda ishlatiladigan repetator.


// int tugmachasini bosish \u003d 7 tugmachasini belgilang; bo'sh sozlash () (tugmacha (tugmacha); // iniale.begin (9600); // Serial Portni kiritish uchun pinlarni ishga tushirish () () (// baland) Agar tugmachali seriya.println ("bosilgan") tomonidan bosilgan bo'lsa, "bosilgan" yozuvi ("bosilgan" yozuvi ("bosilgan" yozuvi ("blokirilmagan"); //otspressed ")
Ushbu eskizda bir nechta yangi jamoalar.
- Ushbu buyruq biz tekshiradigan yukni (yuqori darajadagi) va past (past) qabul qiladi. Oldindan sozlash () Ushbu natija kiritish uchun sozlanishi kerak.
; // tugmachaning ulangan chiqish raqami bo'lgan tugmachani bosing.
Seriya porti sizga Arduino xabarlarini kompyuterga yuborish imkoniyatini beradi, nazoratchi o'zi dasturni amalga oshiradi. Bu dasturni boshqa qurilmalarga yoki ilovalarga yuborishda dasturni tuzatish uchun foydalidir. Seriya porti orqali ma'lumotlarni uzatish uchun (boshqa nomi yoki urt), siz uni o'rnatishda () ishga tushirishingiz kerak

Serial.begin () Bu faqat bitta tortishuv mavjud, bu ARDUININA va kompyuter o'rtasidagi ma'lumotlar uzatish darajasi.
Sketch ARDUOIN OSP (TOOLS \u003e\u003e SERIAL MONITET) ekrandagi xabarni namoyish qilish buyrug'idan foydalanadi.
- Dizayn sizga dasturning taraqqiyotini nazorat qilish, bir nechta cheklarni bir joyda chekish imkonini beradi.
Agar monitorda raqamli o'qiyotgan bo'lsa, u holda "bosilgan" so'zi aks ettiriladi. Yana (aks holda) monitorda "bosilgan" so'zi aks etadi. Endi siz tugmachani bosish orqali boshni yoqishga va o'chirishga harakat qilishingiz mumkin.
// tugmachasini bosing. LED INT INT tugmasi \u003d 7; ST LEDPIN \u003d 8; VOLD sozlash () (tugmachani) (tugmachali, kiritish); // Bu safar biz PIN-kodni kiritamiz; Serial.begin (9600); \u003d Yuqori) (digitalwrite (LEDPIN, yuqori); serial.Println ("bosilgan" (digitalwrite (LEDPINT, past); seriyali.println ("blokirilmagan");

Analog kirish.

analogramma. ARDUPUINA BUPULLARNING BIRINChI O'RNATUSLARNING O'RNATUSLARINI O'QISh va 1023 (5V) gacha bo'lgan qiymatni ko'rsatadi. Agar Analog inpure-dagi kuchlanish 2,5V bo'lsa, u 2,5 / 5 * 1023 \u003d 512 bosqichiga bosiladi
analogramma. Unda bitta tortishuv mavjud, bu analog kirish raqami (A0-A5). Quyidagi eskiz potentsiometr bilan kuchlanish o'qish kodini taqdim etadi. Buning uchun, 5V va GND-ni va INTEUCE INETCE INTERNET-ga eksklyuziv mahsulotlarni almashtirish.

Quyidagi kodni ishga tushiring va rezyoralar daftarchasining aylanishiga qarab qadriyatlar qanday o'zgarayotganini ko'ring.
// Analog inpute in Pempin \u003d A0; // Ushbu pinaga (// ushbu pina uchun markaziy ish haqi (// analog tonini sukutga ulangan). boshlash (9600);) bo'sh ko'cha () (IR Potval \u003d analogulad); / potval - 0 dan 1023 Serial.printnn (potval);)
Quyidagi eskiz tugmachaning sinovini birlashtiradi va LED yoritgichini sketch boshqaradi. LED tugmani bosib o'tadi va porlashning yorqinligini boshqaradi, potentriometr bo'ladi.
// tugmachasini aniqlash tugmasi LED natijasi va o'zgaruvchan intensivlik intensivlik stollari \u003d 7; ST LEDPIN \u003d 9; Int potpin \u003d a0; VOLD sozlash () (tugmachani) (tugmachani); PINMODE (LEDPIN, chiqish); Serial.begin (9600) (agar (// tugmachasini bosgan bo'lsa) \u003d Analogoad (potpin); IR ScaledVal \u003d Xarita (Analogval, 1023, 0, 0, 255); doter seriallari ("bosilgan");] (Digitalwrite (LEDPIN, past); // tugmachasini bosish uchun o'chiring ("UNREPREPREPRED");)

Har bir dasturlash tilida bir xil kodni (tsikl) bajaradigan boshqarish buyruqlari to'plamiga ega (tsikl), joriy kod parchasini (shartlar) va ko'rsatmalarini tanlash bo'yicha ko'rsatmalar va ko'rsatmalar.

Arduino Ilardan kam zarur boshqarish vositalarining katta qismini C / C ++ dan olingan. Ularning sintaksisi C. bilan bir xil bo'lib, Quyidagi ikkita so'zda biz ularning sintaksisini tasvirlaymiz.

Agar operator bo'lsa

Agar operator ma'lum bir holat sinoviga qarab dasturning o'ziga xos paragrafini bajarishga imkon beradi. Agar shart qatlamlangan bo'lsa, dastur kodi bajarilmasa, dastur kodi o'tkazib yuboriladi. Agar buyruqning sintaksisi quyidagicha:

Agar (shart) (ko'rsatma1; ko'rsatma2;)

Vaziyat funktsiya tomonidan qaytarilgan o'zgaruvchan yoki qiymatni taqqoslash mumkin. Shartlarning asosiy mezoni, agar javob har doim yoki haqiqat bo'lsa yoki yolg'on (yolg'on). Agar operator uchun shartlar misollari:

agar (a! \u003d 2) () if bo'lsa (x<10) { } if(znak==’B’) { }

Shart ichida yozilgan qavs ichida siz kodni bajarishingiz mumkin.

Dasturlashni boshlovchi odamlar ko'pincha bitta belgidan foydalanib belgilangan o'zgaruvchining qiymatini tenglashtirishadi va "\u003d". Bunday yozuv o'zgaruvchining qiymatini aniq ko'rsatadi va shuning uchun holat har doim "haqiqat", ya'ni yugurish bo'ladi. O'zgaruvchining ma'lum bir qiymatga teng ekanligini tekshiring, har doim (\u003d\u003d\u003d) ga teng bo'lgan belgini bildiradi.

Shart sifatida siz funktsiya funktsiyalaridan foydalanishingiz mumkin, masalan:

If (bosh)) (Serial.print ("OK");)

Yuqoridagi misol quyidagicha bajariladi: birinchi bosqichda tashabbus () funktsiyasi deb nomlanadi. Ushbu xususiyat "haqiqiy" yoki "yolg'on" deb tarjima qilinadigan qiymatni qaytaradi. Taqqoslash natijasiga qarab, "OK" matn yuboriladi yoki hech narsa yuborilmaydi.

Agar ... boshqa operator

Agar operator bo'lsa, operator bo'lsa, boshqa operator bo'lsa. Bu shart bajarilsa, bitta kod parchasining bajarilishini ta'minlaydi va agar holat bajarilmasa (noto'g'ri) bo'lsa, ikkinchi kod parchasini bajaradi. Sintaksis operatori Agar .... boshqa ko'rinadi:

Agar (shart) (// jamoasi A) (// jamoasi)

"A" buyruqlari faqat shart bajarilgan taqdirda bajariladi, agar "B" buyrug'i shart bajarilmasa, "B" buyrug'i bajariladi. "A" va "B" buyrug'ining bir vaqtning o'zida amalga oshirilishi mumkin emas. Quyidagi misol, agar men sintaksisdan qanday foydalanishni ko'rsatadi ...

Agar (boshlang'ich ()) (seriyali.print ("OK");) (Serial.print ("Xato");

Shunga o'xshab, siz funktsiyaning to'g'riligini tekshirishingiz va foydalanuvchini xabardor qilishingiz mumkin.

Odatiy amaliyot shartlarni rad etishdir. Buning sababi shundaki, bajarilgan funktsiya 0 qiymatini qaytaradi va noto'g'ri ishlagan funktsiyani noto'g'ri ishlayotgan funktsiyani nolga teng bo'lmagan qiymatni qaytaradi.

Bunday "hayotning asosi" ning izohi oddiy. Agar funktsiya to'g'ri bajarilgan bo'lsa, bu bizga kerak bo'lgan yagona ma'lumotlar. Xato bo'lsa, ba'zida funktsiya to'g'ri bajarilmaganligi nima uchun nima uchun nima uchun nima uchun nima uchun bajarilmaganligini tushunish kerak. Va bu erda raqamlar noldan farq qiladi, I.E. Raqamli kodlardan foydalanib, xato turini aniqlashimiz mumkin. Masalan, 1 - bu ba'zi qiymatni o'qish, 2 - xotira yoki diskda yoki boshqa joy yo'q.

So'nggi o'zgartirilgan misolda, nolni to'g'ri bajarib chiqadigan funktsiyani qanday qo'ng'iroq qilish kerakligi ko'rsatilgan:

Agar (!) ()) (Serial.print ("OK");) (Serial.print ("Xato");

Operator tugmasi ishi.

Agar bayonot faqat bitta shartni tekshirishga imkon beradi. Ba'zida qaytarilgan yoki o'qishni o'qishga qarab harakatlardan birini bajarish kerak. Buning uchun bir nechta tanlov operatori bir nechta kalit. Kommutatsiya buyrug'i sintaksisi quyida keltirilgan:

O'zgartirish (Var) (@ harflar: // uchun ko'rsatma (№ 1); ca \u003d/ uchun ko'rsatma (@/) varaqasi 1 va 2-dan farqli ravishda)

Var o'zgaruvchining qiymatiga qarab, ko'rsatmalar ma'lum bir bloklarda amalga oshiriladi. Ish yorlig'i belgilangan qiymat uchun blokning boshlanishini anglatadi. Masalan, 1-holat: ushbu jihozning o'zgaruvchan var qiymatlari qiymati uchun qilinganligini anglatadi.

Har bir blokni sindirish buyrug'i yordamida to'ldirilishi kerak. U Kompyuterning keyingi ijrosiga xalaqit beradi. Agar tanaffus buyrug'i yo'q bo'lsa, ko'rsatmalar keyingi bloklarda tanaffus buyrug'iga o'tkaziladi. Standart yorliq majburiy emas, agar buyruq bo'lsa Odatiy blokda joylashgan ko'rsatmalar faqat o'zgaruvchining qiymati har qanday shablon uchun mos kelmaydi.

Ko'pincha bir xil ko'rsatmalar bir nechta qiymatlardan biri uchun bajarilishi kerak. Bunga quyidagicha erishish mumkin:

O'zgartirish (x) (1-o'lchov: // uchun ko'rsatmalar; ish 2: // uchun 1 :/// uchun ko'rsatmalar; 4: // uchun ko'rsatmalar X \u003d 4 tanaffuslari uchun ko'rsatmalar ; Ish 6: // uchun ko'rsatmalar X \u003d 6 tanaffus; Standart: // Odatiy ko'rsatmalar (agar x 4,5,6 dan farq qiladi))

X o'zgaruvchining qiymatiga qarab, tegishli ko'rsatma birligi amalga oshiriladi. Takrorlash ishi 2: Case 3: Case 5: Agar C o'zgaruvchisining 2 yoki 5 bo'lsa, bir xil kod parchasi bajarilsa, kompilyatorni ma'lum qiladi.

Operator uchun

Operator bir xil kodga ko'p miqdorda ishlatiladi. Ko'pincha bir xil ko'rsatmalarni faqat ba'zi o'zgaruvchining qiymatini o'zgartirish orqali bajarish kerak. Buning uchun tsikl mukammal. Buyruqning sintaksisi quyidagicha:

I st i; uchun (i \u003d 0; i<10;i++) { // инструкции для выполнения в цикле }

Yo'riqnomada keltirilgan birinchi parametr o'zgaruvchining boshlang'ich qiymati. Yana bir element - tsiklning bajarilishini davom ettirish shartlarini tekshirish. Vaziyat bajarilgunga qadar tsikl amalga oshiriladi. So'nggi element o'zgaruvchining qiymatidagi o'zgarishdir. Ko'pincha biz uning qiymatini oshiramiz yoki kamaytiramiz (agar kerak bo'lsa). Ushbu misolda tsiklda keltirilgan ko'rsatmalar i \u003d 0 ... 9 da bajariladi.

Ko'pincha tsiklda ishlatiladigan o'zgaruvchi ibid deb e'lon qilinadi.

Uchun (IN I \u003d 0; i<10;i++) { // инструкции для выполнения в цикле }

Keyingi tsikl bosqichlarini hisoblash uchun ishlatiladigan o'zgaruvchidan tegishli parametrlar bilan funktsiyani boshqarish uchun undan foydalanish mumkin.

Uchun (I-I\u003e 0; i-) (Serial.print (I); // raqamlari 11,9,6,5,1,3,1 gacha)

G'ildirak operatori

Tsikl uchun biz hisoblashni istagan joyingiz uchun juda mos keladi. Masalani oldindan aytib bo'lmaydigan yagona tadbir natijasida ma'lum bir tadbirlarni amalga oshirishingiz kerak bo'lgan vaziyatda (masalan, biz tugmani bosish uchun tugmachani kutmoqdamiz), keyin operator blokini bajaradigan bo'limdan foydalanishimiz mumkin. shart bajarilgunga qadar. Butun operator sintaksisi quyidagicha ko'rinadi:

Qachon (shart) (// ijro bo'yicha ko'rsatmalar bloklanishi)

Davlatni tasdiqlash tsiklning boshida sodir bo'lganda amalga oshirilishi juda muhimdir. Ichidagi ko'rsatmalar bo'lishi mumkin g'ildirak aylanishi Hech qachon ijro etilmaydi. Bundan tashqari, cheksiz tsiklni yaratish mumkin. Keling, ikkita misolni ko'raylik:

Int X \u003d 2; Vaqt (x\u003e 5) (Serial.print (x);) ------------------- 5; Vaqt (y\u003e 0) (Serial.print (y);)

Biroz ichida joylashgan birinchi operatorlarning birinchi bloki hech qachon tugamaydi. O'zgaruvchan x ikkitasi va u endi 5 misol bo'lmaydi 5. Ikkinchi misolda biz cheksiz tsikl bilan shug'ullanamiz. "Y" o'zgaruvchisi 5, i.e. yanada nolga ega. Tsikl ichida "Y" o'zgaruvchisida hech qanday o'zgarish bo'lmaydi, shuning uchun tsikl hech qachon tugamaydi.

Bu tsiklning tugatilishini keltirib chiqaradigan parametrni o'zgartirishni unutib qo'yganimizda bu keng tarqalgan xato. Quyida tsiklni qo'llashning ikkita to'g'ri misoli keltirilgan:

Int X \u003d 0; Vaqt (x.)<10) { //блок инструкций x++; } —————————————- while(true) { if(условие) break; // блок инструкций }

Birinchi misolda, biz holatda tasdiqlangan o'zgaruvchining qiymatini o'zgartirishga g'amxo'rlik qildik. Natijada tsikl har doim tugallanadi. Ikkinchi misolda cheksiz tsikl ataylab yaratilgan. Ushbu tsikl Arduino Idoridagi funktsiyani () mos keladi. Bundan tashqari, tsikl ichida testlar bajarilgandan so'ng, tsiklni tanaffus buyrug'i tugaganidan so'ng kiritildi.

Operator ... qachon

Vaqt bo'lganda tsikl ... tsikl paytida. Sintaksisga qo'shimcha ravishda, u shartni tekshirish joyi bilan tavsiflanadi. Ish paytida ... shartlarni tekshirishda ko'rsatmalarning ijrosi tugaganidan keyin amalga oshiriladi. Bu shuni anglatadiki, tsikldagi ko'rsatmalar bloki kamida bir marta amalga oshiriladi. Quyida boshqarish sintaksisi ... buyrug'i bo'lsa:

(// ko'rsatmalari bloklangan)

Operator operator bilan hammasi haqida yozilgan. Quyida tsiklni ishlatishning misoli ...

Int X \u003d 10; (// ko'rsatmalar bloklari x-;) (x\u003e 0); ----------------- Agar ko'rsatma berilsa (shart) bo'lsa, (haqiqiy);

Operator tanaffus

Chiqarish operatori sizga tsikldan chiqish imkonini beradi (vaqt ... while, while, while) va kommutatsiya variantidan chiqishga imkon beradi. Keyingi misolda, tanaffus buyrug'ining bajarilishini ko'rib chiqing:

Uchun (i \u003d 0; i<10;i++) { if(i==5) break; Serial.print(i); }

Tsikl 0 dan 9 gacha bo'lgan raqamlar uchun amalga oshirilishi kerak, ammo 5 raqamlari uchun, bu holat tugashchini boshqaradi. Bu tsikldan chiqishga olib keladi. Natijada, seriya portiga atigi 0,1,2,3,4 raqami (Serial.print) yuboriladi.

Operatorni davom ettiring

Davom etayotgan operator tsikl bo'yicha ko'rsatmalarning bajarilishini to'xtatishga olib keladi (har doim ...) joriy qiymat va keyingi tsikl bosqichiga o'tish. Keyingi misol shuni ko'rsatadiki, davom etayotgan operator qanday ishlaydi?

Uchun (i \u003d 0; i<10;i++) { if(i==5) continue; Serial.print(i); }

Buni ko'rish qiyin emas, tsikl 5 dan 9 gacha bo'lgan qiymat uchun yakunlanadi, natijada ushbu buyruq bajarilgandan so'ng bajarilgan ko'rsatmalar bajariladi. Natijada, 0.1,2,3,4,6,7,8,9 soni Ketma-ket port (serial.print) yuboriladi.

Operator qaytish

Qaytish bayonoti chaqirilgan funktsiyaning bajarilishini yakunlaydi va ma'lum bir turdagi qiymatni qaytaradi. Buyruq parametri sifatida ma'lum bir turdagi raqam, belgi yoki o'zgaruvchini belgilashingiz mumkin. Qaytish qiymati ko'rsatilgan funktsiya turiga to'g'ri keladigan bo'lishi juda muhimdir. Quyidagi misol, qaytish bayonotidan qanday foydalanishni ko'rsatadi:

ST tekshirliqlari () (agar (0)\u003e 400 ni kiriting (// o'qish) 1; // qiymatlar uchun 1; // Boshqalar uchun 0 ni qaytaradi (0; //)

Ko'rinib turibdiki, bitta funktsiyada siz bir nechta qaytish operatorlaridan foydalanishingiz mumkin, ammo ulardan bittasi har doim ishlaydi. Qayta tiklash operatoridan parametrlarsiz foydalanish joizdir. Bu hech qanday qiymatni qaytarmaydigan funktsiyani muddatidan oldin tugatishga imkon beradi.

Bo'sh_name_name () (ko'rsatma1; if (x \u003d\u003d 0) qaytish; ko'rsatma2; ko'rsatma3;)

Yuqoridagi misolda ko'rsatma faqat funktsiya deb nomlanganda har doim bajariladi. Ko'rsatmaning ijrosi2 va ko'rsatma berish buyrug'i natijalariga bog'liq. Agar shart bajarilsa (to'g'ri) bo'lsa, qaytish buyrug'i bajariladi va funktsiya ishni yakunlaydi.

Agar shart bajarilmagan bo'lsa, qaytish buyrug'i bajarilmaydi, shuningdek ko'rsatmalar bajariladi, ammo ko'rsatmalar bajariladi. Ko'rsatmalar2 va ko'rsatmalar3, keyin esa uning ishlashini yakunlaydi.

Goto operatori

Mafkuraviy mulohazalardan ushbu tavsifni o'tkazib yuborishingiz kerak ... Goto operator - bu an'anaviy dasturlashda ishlatilmasligi kerak bo'lgan buyruq. Bu asorat kodini oshiradi va dasturlashda yomon odat. Ushbu buyruqni dasturlaringizda ishlatmaslikni qat'iy tavsiya qilamiz. Goto Arduino.CC veb-saytida rasmiy hujjatlarda bo'lganligi sababli, biz buni qisqacha tavsif beramiz. Goto buyruq sintaksisi:

.... Goto metaka; // "metka" yozuvi bilan satrga boring .... .... Mitka: // York bilan ishlashni davom ettiradigan yorliq ...

Buyruq yorliqqa, ya'ni dasturda ko'rsatilgan belgiga o'tishga imkon beradi.

Ushbu dars Arduino tizimlarini C. dasturlash uchun zarur bo'lgan minimal bilimlarni C. C. C. Siz uni ko'rishingiz va ma'lumot ma'lumotlari sifatida foydalanishingiz mumkin. Boshqa tizimlarda dasturlashtirilgan fayllar ushbu maqolani o'tkazib yuborishingiz mumkin.

Takrorlaymanki, bu minimal ma'lumot. Ko'rsatkichlar, sinflar, string o'zgaruvchilar va boshqalarning tavsifi. keyingi darslarda beriladi. Agar biror narsa tushunarsiz bo'lsa, tashvishlanmang. Keyingi darslarda ko'plab misollar va tushuntirishlar bo'ladi.

Arduino dasturining tuzilishi.

Arduino dasturining tuzilishi juda oddiy va minimal tazyiqda sozlash () va pastadir () ning ikki qismidan iborat.

bo'sh sozlash () ()

bo'sh ko'cha () () ()

Sozlash () funktsiyasi boshqaruvchini yoki nazoratchini ko'targaningizda amalga oshiriladi. Odatda u o'zgaruvchilarning dastlabki sozlamalarida ro'y beradi, registrlar. Funktsiya hech narsa bo'lmasa ham, dasturda mavjud bo'lishi kerak.

O'rnatish () ni tugatgandan so'ng, boshqarish pastadir () funktsiyasiga o'tadi. U tanasida qayd etilgan buyruqlarni cheksiz tsiklda (jingalak qavslar o'rtasida) o'qiydi. Aslida bu jamoalar va barcha algoritmik xatti-harakatlarini boshqarish.

Dastlabki sintaksis qoidalar C.

; vergul Shriftlarda ko'plab bo'shliqlar, simli portlar bo'lishi mumkin. Shaklni tugatish belgisi "vergul bilan ishlash nuqtasi" belgisidir.

z \u003d x + y;
z \u003d x.
+ y;

() Rasmiy qavslar Funktsiya yoki iboralar blokini aniqlang. Masalan, sozlash () va pastadirlar () funktsiyalarida.

/ * ... / sharh blokiYopishingizga ishonch hosil qiling.

/ * Bu sharh bloki * /

// bitta line sharhAgar chiziq oxirigacha yopish, amal qilish kerak emas.

// Bu bitta qator sharh

O'zgaruvchilar va ma'lumotlar turlari.

O'zgaruvchan hujayra tasodifiy kirish xotirasiqaysi ma'lumot saqlanadi. Dastur oraliq hisoblash ma'lumotlarini saqlash uchun o'zgaruvchilarni ishlatadi. Hisoblash uchun turli xil formatlar, turli xil ma'lumotlar, turli xil, shuning uchun C tilidagi o'zgaruvchilar quyidagi turlarga ega.

Ma'lumotlar turi Bit Raqamlar oralig'i
boolean. 8 to'g'ri, yolg'on
char. 8 -128 … 127
imzolanmagan char. 8 0 … 255
bayt 8 0 … 255
int. 16 -32768 … 32767
imzolanmagan int. 16 0 … 65535
so'z. 16 0 … 65535
uzoq. 32 -2147483648 … 2147483647
cheksiz cheksiz. 32 0 … 4294967295
qisqa 16 -32768 … 32767
suzish. 32 -3.4028235+38 … 3.4028235+38
ikki baravar. 32 -3.4028235+38 … 3.4028235+38

Ma'lumotlar turlari hisob-kitoblarning istalgan to'g'riligi, ma'lumotlar formatlari va boshqalarga asoslanadi. Masalan, 100 tagacha hisoblanadigan peshtaxta uchun uzoq vaqt davomida tanlashni tanlang. Bu ishlaydi, ammo operatsiya ko'proq ma'lumotlar xotirasi va dasturlarini amalga oshiradi, ko'proq vaqt talab etadi.

O'zgaruvchilarni e'lon qilish.

Ma'lumotlar turi ko'rsatilgan, keyin o'zgaruvchining nomi.

int X; // o'zgaruvchini e'lon qilish X turi int
suzuvchi kenglik; // O'zgaruvchan nomlangan lectbox turini e'lon qilish

Barcha o'zgaruvchilar ulardan foydalanishdan oldin e'lon qilinishi kerak.

O'zgaruvchan dasturning istalgan qismida e'lon qilinishi mumkin, ammo bu dasturiy ta'minot bloklaridan foydalanishga bog'liq. Ular. O'zgaruvchilar tarkibiga ega joylarga ega.

  • Dasturning boshida VOLD sozlamalari () funktsiyasidan oldin dasturning boshida e'lon qilingan va dasturning istalgan joyida mavjud.
  • Mahalliy o'zgaruvchilar tsikl uchun mo'ljallangan funktsiyalar yoki bloklar ichida e'lon qilinadi va faqat e'lon qilingan bloklarda ishlatilishi mumkin. Bir nomli bir nechta o'zgaruvchi mavjud, ammo ko'rinadigan turli xil yo'nalishlar.

int rejimi; // o'zgaruvchan barcha funktsiyalar uchun mavjud

bo'sh sozlash () ()
// bo'sh blok, boshlang'ich qurilmalar talab qilinmaydi
}

bo'sh ko'cha () () ()

uzoq sonli; // o'zgaruvchi faqat pastadir () funktsiyalarida mavjud.

uchun (IN I \u003d 0; i< 10;) // переменная i доступна только внутри цикла
{
I ++;
}
}

O'zgaruvchini e'lon qilganda, siz uning boshlang'ich qiymatini (ishga tushirish) ko'rsatishingiz mumkin.

int X \u003d 0; // bir o'zgaruvchi x boshlang'ich qiymati bilan e'lon qilinadi
char d \u003d 'a'; // O'zgaruvchan D "A" belgisining belgisiga teng bo'lgan boshlang'ich qiymat bilan e'lon qilinadi

Turli xil ma'lumotlar bilan arifmetik operatsiyalarda ma'lumotlar turlari avtomatik ravishda o'zgartiriladi. Ammo har doim aniq o'zgarishlardan foydalanish yaxshiroqdir.

int X; // o'zgaruvchan int.
char y; // o'zgaruvchan char.
cH Z; // o'zgaruvchan int.

z \u003d x + (int) y; // o'zgaruvchan y Intga aniq o'zgartiriladi

Arifmetik operatsiyalar.

Munosabatlar operatsiyalari.

Mantiqiy operatsiyalar.

Ishchilar bo'yicha operatsiyalar.

Bit operatsiyalari.

& Va
| Yoki
^ Bundan mustasno yoki
~ Inversiya
<< Chap chap
>> O'ng tomonga siljish

Aralash topshiriqlar.

Variantlar, dasturni boshqarish-ni tanlang.

Agar operator bo'lsa Agar sharti bo'lsa, qavslardagi holatni tekshiradi va jingalak qavslardagi keyingi ifoda yoki blokni amalga oshiradi, agar holat to'g'ri bo'lsa.

agar (x \u003d\u003d 5) // if if bo'lsa, z \u003d 0
z \u003d 0;

if (x\u003e 5) // x\u003e
(z \u003d 0; y \u003d 8;)

Agar ... boshqa Sizga ikkita variantni tanlash imkonini beradi.

if (x\u003e 5) // Agar x\u003e 5 bo'lsa, blok z \u003d 0, y \u003d 8 bajarilsa;
{
z \u003d 0;
y \u003d 8;
}

{
z \u003d 0;
y \u003d 0;
}

Boshqa bo'lsa. - bir nechta tanlov qilish imkonini beradi

if (x\u003e 5) // Agar x\u003e 5 bo'lsa, blok z \u003d 0, y \u003d 8 bajarilsa;
{
z \u003d 0;
y \u003d 8;
}

boshqa if (x\u003e 20) // Agar x\u003e 20 bo'lsa, ushbu birlik bajariladi
{
}

aks holda // aks holda bu birlik amalga oshiriladi.
{
z \u003d 0;
y \u003d 0;
}

Ishni almashtirish. - Ko'p tanlov. O'zgaruvchini (x-misolda) solishtirishga imkon beradi (5 va 10-misolda) va o'zgaruvchini doimiy ravishda bajaring.

(X) (x) (

ish 5:
// kod x \u003d 5 bo'lsa, amalga oshiriladi
Sindirish;

ish 10:
// kod x \u003d 10 bo'lsa, amalga oshiriladi
Sindirish;

odatiy:
// Kodeks avvalgi qiymat to'g'ri kelmasa, amalga oshiriladi
Sindirish;
}

Uchun tsikl. Dizayn sizga berilgan bir qator iteratsiyalar bilan tsiklni tashkil qilish imkonini beradi. Sintaksis quyidagiga o'xshaydi:

uchun (tsikl boshlanishidan oldin harakat;
tsiklning ahvoli davomi;
Har bir iteratsiya oxirida harakat) (

// kod kodi tsikl

100 ta iteratsiyalarning misoli.

uchun (i \u003d 0; i< 100; i++) // начальное значение 0, конечное 99, шаг 1

{
Sum \u003d so'm + i;
}

Tsikl paytida. Operator dizayni bilan tsiklni tashkil etishga imkon beradi:

qachon (ibor)
{
// kod kodi tsikl
}

Qavslardagi ifoda to'g'ri ekan, tsikl amalga oshiriladi. 10 iteratsiyalar uchun bir necha tsikl misolidir.

x \u003d 0;
vaqt (x.)< 10)
{
// kod kodi tsikl
X ++;
}

Bir muncha vaqt - Mahsulotning holati bilan tsikl.

qilmoq.
{
// kod kodi tsikl
) (Ixt) paytida (ifoda);

Tsikl ifoda to'g'ri bo'lguncha amalga oshiriladi.
Sindirish - tsikldan chiqarish operatori. Buning amalga oshirilishini to'xtatish uchun ishlatiladi, tsikl.

x \u003d 0;
vaqt (x.)< 10)
{
if (z\u003e 20) sindirish; // agar z\u003e 20 bo'lsa, tsikldan chiqing
// kod kodi tsikl
X ++;
}

Goto. - shartsiz o'tish operatori.

goto metaka1; // metaka1 ga o'tish
………………
metka1:

Davom eting. - Tsikl tanasining uchiga operatorlarni o'tkazib yuboring.

x \u003d 0;
Vaqt (x.)< 10)
{
// kod kodi tsikl
if (z\u003e 20) davom etsa; // agar z\u003e 20 bo'lsa, tsiklning tanasining boshiga qayting
// kod kodi tsikl
X ++;
}

Qatorlar.

Bir qator - bu xotira maydoni. U erda bir nechta o'zgaruvchilar izchil saqlanadi.

Qator e'lon qilingan.

sT asrlar; // 10 o'zgaruvchini kiriting Int

suzish og'irligi; // 100 o'zgaruvchini massiv

Reklama e'lon qilishda quyidagilar kiritilishi mumkin:

sT ASES \u003d (23, 54, 34, 45, 45, 23, 27, 28);

Shunga o'xshash qo'llarning o'zgaruvchilariga murojaat qiling:

x \u003d yoshlar; // x x massiv elementi qiymatini belgilaydi.
Ages \u003d 32; // 9 Bir qator element 32 ga o'rnatiladi

Ardik elementlarini raqamlash har doim noldan iborat.

Funktsiyalar.

Funktsiyalar sizga bir xil xatti-harakatlarni turli xil ma'lumotlar bilan bajarishga imkon beradi. Funktsiya quyidagicha:

  • u sabab bo'lgan ismi;
  • dalillar - funktsiya hisoblashdan foydalanadi;
  • funktsiya orqali qaytarilgan ma'lumotlar turi.

Foydalanuvchi funktsiyasi sozlash () funktsiyalari () funktsiyalaridan tashqarida tasvirlangan.

bo'sh sozlash () ()
// dasturni ishga tushirganda kod
}

bo'sh ko'cha () () ()
// asosiy kodi, tsiklda ijro etilgan
}

// Foydalanuvchi funktsiyasini o'chirish funktsiya nomi
Vazifa funktsiya nomi (argument1 turini kiriting, argument1, ...
{
// tana funktsiyasi
Qaytish ();
}

Ikki dalilning kvadratlari yig'indisini hisoblash funktsiyasining misoli.

iNT Sumqwadr (int X, int y)
{
Qaytish (x * x + y * y);
}

Funktsiya qo'ng'irog'i sodir bo'ladi:

d \u003d 2; b \u003d 3;
z \u003dumqwadrr (d, b); // Z-da d va b o'zgaruvchilar kvadratlarining yig'indisi bo'ladi

Funktsiyalar o'rnatilgan, odatdagi, ulangan.

Juda qisqa, ammo ARDUOINE SYSTEMLARI UChUN C uchun C uchun dasturlarni yozishni boshlash uchun bu ma'lumotlar etarli bo'lishi kerak.

Men ushbu darsda aytib o'tmoqchi bo'lgan so'nggi narsa, men C. C. C. Ushbu darsni birinchi marta o'qigan bo'lsangiz, bu bo'limni o'tkazib yuborsangiz va uni keyinroq amalga oshirishga yordam beradi.

Tashqi dastur dizaynining asosiy maqsadi dasturlarning dastlabki xatolarini takomillashtirish, rasmiy xatolar sonini kamaytirishdir. Shuning uchun ushbu maqsadga erishish uchun siz barcha tavsiyalarni ishonchli buzishingiz mumkin.

C. nomlari

Ma'lumotlar turlarini ifodalovchi ismlar aralash registika bo'yicha yozilishi kerak. Ismning birinchi harfi sarlavha (eng yuqori ro'yxat) bo'lishi kerak.

Signal, Vaqtingiz

Belgilar aralash registratsiyada ismlar tomonidan yozilgan bo'lishi kerak, chiziqning birinchi harfi (kichik harf).

FAAJRA :. Siz xatcho'plarga qo'shishingiz mumkin.

Arduino asosiy elementlari bilan tanishib chiqqandan so'ng, "Salom Dunyo" dasturini yozish, shuningdek "!" Dasturiy tilni tanishish vaqti keldi.

Tilning tuzilishi asosan C / C ++ ga asoslanadi, shuning uchun ilgari ushbu tilda dasturlashtirilgan arduino dasturlarini tark etishdan qiynalamaydi. Qolganlari menejment buyruqlari, ma'lumotlar turlari va funktsiyalari haqidagi asosiy ma'lumotlarni o'rganishi kerak.

Ushbu ma'lumotlarning aksariyati ma'lumotlar turlari bo'yicha farqlarni hisobga olgan holda har qanday C / C ++ kurslariga mos keladi, shuningdek i / O portlarini dasturlash uchun bir nechta aniq ko'rsatmalar bilan mos keladi.

Asoslar asoslari

Bir nechta rasmiy narsalar, ya'ni hamma biladigan narsalar, lekin ba'zan unutilgan ...

Arduino IDEda, C / C ++ kabi, siz belgilar registrlarini eslab qolishingiz kerak. Kalit so'zlar, masalan, chunki har doim kichik harfda yozilgan. Har bir ko'rsatma ";". Ko'rgazma sifatida talqin qilinish uchun bir yarim tanalik hisobot beradi.

Qavslar (..) dasturiy bloklarni belgilash uchun ishlatiladi. Biz ularni tana funktsiyasini (pastga qarang), tsikllar va shartli operatorlar cheklash uchun foydalanamiz.

Yaxshi amaliyot bu dastur tarkibiga sharh qo'shish, kodni osongina tushunishga yordam beradi. Bir qator sharhlar bilan boshlanadi // (Ikki marta cho'kib ketadigan chiziq). Ko'p chiziqli sharhlar bilan boshlanadi /* va tugaydi */

Agar bizda har qanday kutubxonani dasturxonga ulamoqchi bo'lsak, biz buyruqni o'z ichiga olgan holda ishlatamiz. Bu erda bog'lanish kutubxonalari:

#Include. // Standart kutubxona # Closma loyihasi katalogi

Arduino funktsiyalari

Funktsiya (subroutin) ba'zi operatsiyalarni amalga oshiradigan dasturning alohida qismidir. Funktsiyalar asosiy dasturni soddalashtirish va kodning o'qilishini yaxshilash uchun ishlatiladi. Funktsiyalardan foydalanish foydali, chunki biz ularni ko'pgina loyihalarimizda osongina ishlatishimiz mumkin.

Standart dasturlash kursida quyidagi maqolalarni beradigan funktsiyalar to'g'risidagi ma'lumotlar mavjud. Arduino misolida funktsiyalar boshida muhokama qilinadi, chunki hatto eng oddiy dastur ham ikkita maxsus funktsiya bo'lishi kerak. Bu avvalgi maqolalarda allaqachon aytib o'tilgan, ammo bu erda biz ushbu ma'lumotlarni tizimlashtiramiz.

Mudofaa reklamasi

Deklaratsiya sxemasi quyidagicha xususiyatlarga ega:

Funktsiya_Name turi (parametr) (// ijroining) qaytishi (/ * qaytarish qiymati * /););)

bir tur - Bu mavjud bo'lgan har qanday ma'lumot turining nomi bu til Dasturlash. Arduino dasturlashda mavjud bo'lgan turlar ro'yxati keling, alohida maqolada ko'rib chiqamiz.

Bajarilgandan so'ng funktsiya e'lon qilingan tur qiymatini qaytaradi. Agar funktsiya qaytarish qiymatini qabul qilmasa, ma'lumotlar turi "bo'sh" bo'ladi.

funktsiya nomi Uni bir-biridan aniqlashga imkon beradi. Qo'ng'iroq qilish uchun (ishga tushirish) funktsiyasini, biz unga ism beramiz.

parametr - funktsiya qo'ng'iroq parametri. Parametrlar talab qilinmaydi, ammo ko'pincha ular foydali. Agar biz hech qanday dalil bo'lmagan funktsiyani yozsak, biz quruq qavslarni bo'sh qoldiramiz.

Qavs ichida "(...)" "Funktsiyaning haqiqiy tanasini yoki biz bajarishni xohlagan ko'rsatmalarni o'z ichiga oladi. Maxsus ko'rsatmalarning tavsifi alohida maqolada ko'rsatilgan.

Qiymatga qaytaradigan barcha funktsiyalar Qaytish operatori tomonidan bajariladi, undan keyin qaytish qiymati Faqat nol ko'rsatgichda e'lon qilingan funktsiyalar ("VOD" VOLD ") ning qaytish operatori mavjud emas. Qayta ishlash to'g'risidagi bayonot joyidan qat'iy nazar ishning bajarilishini tugatishini bilish kerak.

Quyida funktsiyalar deklaratsiyasining ba'zi misollari keltirilgan.

Bo'sh F1 (// tana funktsiyasi) ----------------------------- tana funktsiyasi (0);) --------- --- Star (int A, int) (qaytish (a + b););)

Misollar haqida ko'rib turganingizdek, funktsiyalar deklaratsiyasi sizning ehtiyojlaringizga qarab turli xil shakllar bo'lishi mumkin.

O'z dasturingizni yozayotganda funktsiyalarni sharhlash va qo'llashingizni maslahat beramiz. Vaqt o'tishi bilan har bir dasturchi yangi dasturlarni yozishni osonlashtiradigan va tezlashtirishni osonlashtiradigan "barcha holatlar uchun" funktsiyalariga ega.

Endi biz o'z funktsiyangizni qanday yozishingiz mumkinligini bilamiz, siz undan foydalanishni o'rganishingiz kerak.

Qo'ng'iroq funktsiyasi

Bitta fayl / dasturda qayd etadigan barcha funktsiyalar. Albatta ko'proq oqlangan echim bor, ammo biz keyingi safar tasvirlashga harakat qilamiz.

Funktsiyani e'lon qiladi, biz uni boshqa funktsiyalarda tegishli nom va har qanday talabnoma bilan ishlatishimiz mumkin. Quyida yuqorida keltirib o'tilgan funktsiyalarni chaqirishga misollar keltirilgan:

F1 (); Ortiqcha (2.2); y \u003d plyus (1.5);

Misollarda ko'rib turganingizdek, funktsiya qo'ng'irog'i uning nomi va kerakli parametrlarni belgilash orqali amalga oshiriladi. O'zining e'loniga muvofiq har doim funktsiyani chaqirish juda muhimdir.

Agar F1 () funktsiyasi parametrlarsiz e'lon qilinsa, unda u deb nomlanganda hech qanday parametr ko'rsatilmaydi. F1 (0) funktsiyasini chaqirish noto'g'ri bo'ladi.

Plyus funktsiyasi (int A, int A) ikkita parametrni talab qiladi, shuning uchun bitta yoki uchta parametr bilan qo'ng'iroq mumkin emas.

"Y \u003d Plyus" (1.5) "plyus" funktsiyasida "1" va "5" parametrlari bilan "Plus" funktsiyasi bilan bajariladi va "Y" o'zgaruvchisiga qaytariladi.

Sozlash () va pastadirlar () funktsiyalari.

O'lchamlantirish va qo'ng'iroq qilish funktsiyalarini bilish, biz Arduino tizim funktsiyalariga boramiz: sozlash; o'rnatish () va loop (). Arduino IDR B. majburiy Ushbu ikkita funktsiyani e'lon qilish kerak.

sozlash () - bu quvvat yoqilganda yoki qayta tiklash tugmachasini bosganda avtomatik ravishda deb ataladigan funktsiya.

Uning nomiga ko'ra, u o'zgaruvchilarning boshlang'ich qiymatlarini, kirish va tizim chiqishi, odatda dastlabki parametrlarga o'rnatiladi. Uning o'ziga xos xususiyatlari tufayli bu xususiyat qiymatlarni qaytarmaydi va parametrlar bilan chaqirilmaydi. To'g'ri sozlash () funktsiyasi deklaratsiyasi quyida keltirilgan:

VOLD sozlash () (// tana funktsiyasi - tizimni ishga tushirish)

loop () cheksiz tsiklda chaqiriladigan funktsiya. Ushbu xususiyat shuningdek qiymatlarni qaytarmaydi va parametrlar bilan chaqirilmaydi. Quyida pastadir () funktsiyasining to'g'ri deklaratsiyasi ko'rsatilgan.

Bo'sh ko'cha () (// tana funktsiyasi - Dastur kodi)

Ko'rinib turibdiki, pastadir () funktsiyasini e'lon qilish sozlash () funktsiyasini deklaratsiyasi bilan bir xil. Farqi shundaki, ushbu funktsiyalarni mikrokontroller bilan bajarish.

Endi biz quyidagi psudocode-ni tahlil qilamiz:

Bo'sh sozlash (ON_LEDD1 (); // LED_LED1 () LED1) LED1-ni o'chiring; // LED2 Off_Led2 () LED; // ni o'chiring; // LED2 LED ni o'chiring)

Setup () funktsiyasida ikkita ko'rsatma mavjud: Kengashga ulangan LED1-ning birinchi navbati (masalan, 13-bilan bog'laning) va ikkinchisi LED1 LED like o'chirilgan.

Loop () funktsiyasi Kengashga ulangan LED2-ni yoqish va o'chirish uchun bir xil ko'rsatmalar (masalan, 12-bilan bog'laning).

LED LED dasturining ishga tushirilishi natijasida LED bir marta miltillaydi, LED2 yonib turadi, Arduino yoqilguncha.

Qayta tiklash tugmachasini bosgan holda LED1 yana bir marta yonib turadi va LED2 yana miltillay boshlaydi.

Qamamat:

  • O'rnatish () va Loop () funktsiyalari - bu har bir loyihada aniqlanishi kerak bo'lgan tizim funktsiyalari. Hatto ulardan birida biz hech qanday kodni yozmaymiz, biz hali ham ushbu ikkita funktsiyani e'lon qilishimiz kerak;
  • Sozlash () funktsiyasi bir marta bajariladi, Loop () doimiy ravishda amalga oshiriladi;
  • Biz yaratamiz o'z funktsiyalari bitta faylda;
  • Biz o'z vazifamizni ikkala sozlash () va pastadir () va boshqa funktsiyalardan qo'ng'iroq qilishimiz mumkin;
  • O'z funktsiyalarimiz parametrlar va qaytish qiymati bilan chaqirish mumkin;
  • Funktsiya qo'ng'irog'i uning deklaratsiyasiga muvofiq amalga oshirilishi kerak.

Arduino modulining asoslari SI Tilidir (ehtimol s ++). Aniq, ushbu til lazzati, qayta ishlash / simlar deb ataladi. Yaxshi tilni ko'rib chiqish Siz arizada topasiz. Va men til haqida ko'proq ma'lumotni aytmoqchiman, lekin dasturlash haqida.

Dastur protsessor kompyuteringiz protsessorini yoki ARDUINO modulini mikrokontroller protsessorini tushunadigan buyruqlar to'plamidir. Protsessor buyruqlarni o'qiydi va ularni bajaradi. Protsessorni tushunadigan har qanday jamoalar. Bular faqat ikkilik raqamlar va boshqa hech narsa emas. Protsessor bir marta va rejalashtirilgan arifmetik operatsiyalarni amalga oshirish orqali protsessor raqamlar bilan ishlaydi. Ikkilik raqamlar. Va shuni ma'lum qiladi, jamoalar ham, ular tegishli bo'lgan narsalar shunchaki ikkilik raqamlar. Mana bunday. Qanday qilib protsessor bu "qoziq" ni tushunadi ikkilik raqamlar?

Birinchidan, bu ikkilik raqamlarning barchasi murojaat qiladigan serial xotira kataklariga yoziladi. Dasturni yuklab olganingizda va u ishlashni boshlaganingizda, protsessor dasturning birinchi manzilini oladi, bu erda buyruq yozilishi kerak. Raqamlar bilan protsessor operatsiyalarini talab qiladigan buyruqlar "belgilarni aniqlash", masalan, quyidagi ikkita xotira hujayralarida katlanmilishi kerak bo'lgan ikkita raqam. Va peshtaxta, keyingi buyruqning manzili qayd etilgan, bu holatda ushbu manzilda dastur quyidagi buyruqni amalga oshirish uchun manzilni oshiradi. Agar dastur yoki muvaffaqiyatsizliklar dasturi yoki muvaffaqiyatsizligi bo'lsa, protsessor xato bo'lishi mumkin, so'ngra jamoa o'rniga raqamni o'qib chiqqach, protsessor nima qilmasligi kerak va "muzlatish" dasturi amalga oshiradigan narsa qilmaydi.

Shunday qilib, har qanday dastur ikkilik raqamlarning ketma-ketligidir. Va dasturlash - bu ikkilik raqamlarning to'g'ri ketma-ketligini to'g'ri yozish qobiliyati. Uzoq vaqt davomida dasturlash tillari deb ataladigan maxsus vositalardan foydalana boshladi.

Biroq, birinchi navbatda har qanday dastur sizga dastur nima qilish kerakligini va kerak bo'lgan narsa uchun aniq tushunishni talab qiladi. Siz buni tushunasiz, dasturni yaratish osonroq. Kichik dasturlar, qaysi dasturlar kichik ekanligini aytish qiyin bo'lsa-da, ular hech narsa emas deb hisoblanmaydi. Ko'proq murakkab dasturlar mustaqil dastur sifatida ko'rib chiqilishi mumkin bo'lgan qismlarga bo'linadi. Shunday qilib, tuzatish va tekshirish osonroq, uni yaratish yaxshiroqdir.

Men bahslashishga tayyor emasman, lekin menimcha, dastur odatdagi tilda tavsiflarni boshlash uchun qulayroqdir. Va shu ma'noda, dasturlash dastur kodini yozish bilan chalkashib ketmasligiga ishonaman. Dastur odatiy so'zlar bilan tavsiflanganda, dastur kodini yaratish uchun qanday dasturlash tilini tanlashingiz osonroq bo'ladi.

Ikkilik raqamlardan foydalangan holda dasturni yozib olish uchun eng yaqin. Bu ikkilik guruhlarga, tushunarli protsessorlarga nisbatan til buyruqlari bilan tavsiflanadi. Ammo konserbori bo'yicha dasturlarni kodlash rasmiy operatsiyalarga qaraganda san'atga ko'proq kuch talab qiladi. Bayik yoki C kabi yuqori darajadagi tillarni qo'llash osonroq va osonroq. Va uzoq vaqt davomida grafik tili bu tilda protsessor tiliga "Yaqinda" tarjimonlar "paydo bo'ldi.

Til dasturlarini dasturlash tillaridan tashqari, dasturlash tillarining ba'zi ixtisoslashuvi mavjud bo'lib, ixtisoslashgan tillar mavjud edi. Oxiri men Arduino modulini dasturlash tilini olib borardim.

Modulni aytishingiz uchun modul bizga zarur bo'lgan buyruqlar to'plamida tashkil etilgan narsani amalga oshirish uchun. Ammo avvaliga Arduinodan nima kerak?

Modul har xil fazilatlarda ishlatilishi mumkin - bu robotning yurak (yoki boshi), bu qurilmaning asosidir, bu mikrokontrolchilar bilan ishlash va hokazo.

Yuqorida, biz kompyuterga modul ulanishini tekshirish uchun oddiy dasturlardan foydalanganmiz. Kimdir juda sodda tuyulishi mumkin, shuning uchun qiziq emas, ammo har qanday murakkab dasturlar biz allaqachon tanish bo'lganlarga o'xshash sodda bo'laklardan iborat.

Keling, bizga nimani aytib berishimiz mumkinligini ko'rib chiqaylik oddiy dastur "To'liq LED".

sT LEDPIN \u003d 13;

pinmode (LETPIN, chiqish);

digitalWrite (LEDPIN, yuqori);

digitalwrite (LEDPIN, past);

Birinchidan, keling, nima ekanligini eslaylik. Aslida, bu dizayni tufayli, joriy yo'nalishda oqilona oqayotganda, o'tish boshlanadi. Ya'ni LED yoritilgan, siz uni orasidan oqishingiz kerak, bu LED LED tomonidan qo'llanilishi kerakligini anglatadi. Shunday qilib, oqim ruxsat etilgan qiymatdan oshmasligi uchun, LED bilan bir qatorda, rezistor joriy cheklov deb ataladi (A-raqamli chiqinishga qarang). LEDga kuchlanish ARDUININA modulining asosidir, bu mikrokontrollerning asosidir. Mikrokontroller, bizning amrlarimizni bajaradigan protsessordan tashqari bir yoki bir nechta i / o portlariga ega. Hisobga olinmasdan muayyan qurilma Port, aytaylik - port mahsuloti ishlab chiqarish ustida ishlayotganda, u ikki davlat bilan raqamli chip chiqishi sifatida taqdim etiladi, u erda va o'chirilgan holda joylashtirilgan (chiqishda kuchlanish mavjud emas, kuchlanish mavjud emas).

Ammo bir xil port chiqishi ham kirish joyida ishlashi mumkin. Bunday holda, masalan, bu, masalan, raqamli chip kiritish - mantiqiy daraja, yuqori yoki past (Ilovaga qarang).

Yetakni miltillasak:

Port chiqishini yoqing. Port mahsulotini o'chiring.

Ammo protsessor juda tez ishlaydi. Bizda miltillash uchun vaqtingiz bo'lmaydi. Bu milt-milt-milt-milt-milt-milt-milt-milt-milt-milt-pauza qilishimiz kerak. Ya'ni:

Port chiqishini yoqing. 1 soniya pauza qilish.

Port mahsulotini o'chiring.

1 soniya pauza qilish.

Bu bizning dasturimiz. Protsessor birinchi buyruqni o'qiydi va chiqishni yoqadi, LED yonadi. Protsessor ishlamay qoldi va chiqishni o'chiradi, LED chiqadi. Ammo u bir marta miltilladi.

Har qanday jarayon yoki belgilangan buyruqlarni takrorlash tsikl dasturlash deb ataladi. Turli xil tsikllardan foydalangan. Bajarilgan tsikl bor set raqami vaqt. Bu tsikl. Vaziyat bajarilgunga qadar tsikllar bajarilgunga qadar tsikllar mavjud, ular tsiklning dizaynining bir qismi. Va agar shart hech qachon to'ldirilmasa, tsikl cheksiz sonni bajaradi. Bu cheksiz tsikl.

Men mikrokontroltroller yuqoridagi turdagi dasturlardan foydalaniladi, deb o'ylamayman. Ya'ni bir nechta buyruqlar bir marta bajariladi va boshqaruvchi ishlamaydi. Qoida tariqasida, u etkazib berish kuchlanish etkazib berilishi bilan doimiy ravishda ishlaydi. Va bu mikrokontroller cheksiz tsiklda ishlashi kerakligini anglatadi.

Bu bo'shliqlar funktsiyasi (), pastadir - bu pastadir, yopiq tsikl. Tsiklni tugatish shartlari emas va shuning uchun uni tugatish uchun shart emas.

Bundan tashqari, biz chiqishni va qanday ishlatishni, chiqish (chiqish) yoki kirish (kirish) haqida xabar berishimiz kerak. Ushbu maqsad - bu Arduino tilida, shuningdek, agar u ishlamayotgan bo'lsa ham, PINMode () buyrug'i ().

pinmode (LETPIN, chiqish);

Va shunga qaramay, til dizayni chiqishni aniqlash uchun o'zgaruvchini ishlatadi:

sT LEDPIN \u003d 13;

O'zgaruvchilar yordamida qulay. Siz 13 va 12 ta chiqishdan foydalanishni hal qilishda siz faqat bitta satrda o'zgarasiz. Bu katta dasturlarda ayniqsa kuchli ta'sir ko'rsatmoqda. O'zgaruvchan ismini uning ixtiyorida tanlanishi mumkin, ammo qoida tariqasida, u faqat ramz bo'lishi kerak va ko'pincha belgilar soni cheklangan. Agar siz o'zgaruvchining ismini noto'g'ri talqin qilsangiz, men kompilyator sizni to'g'rilaydi deb o'ylayman.

Digitalwrite xususiyati (LEDPIN, yuqori) ko'rsatilgan mahsulotni yuqori darajadagi holatga keltiradi, ya'ni u chiqadi.

Va kechiktirilgan (1000), siz allaqachon tushunganingizdek, 1000 millisekund yoki 1 soniyada pauza qilishni anglatadi.

Bu int, bo'shliq kabi konsollarni tushunish uchun qoladi. Har qanday qiymatlar, har qanday o'zgaruvchilar dastur buyruqlari sifatida xotiraga joylashtiriladi. Xotira hujayralarida raqamlar ko'pincha 8 bitdan iborat. Bu bayt. Ammo bayt, 0 dan 255 gacha. Katta raqamlarni yozish uchun sizga ikkita bayt yoki undan ko'p, ya'ni ikki yoki undan ortiq xotira hujayralari kerak. Protsessor raqamni qanday topish mumkinligini aniq bilishi kerak, turli xil turlar Raqamlar turli xil nomlarga ega. Shunday qilib, bayt deb nomlangan raqam bitta katakchani, int (butun son, butun sonni) ko'proq oladi. Bundan tashqari, dasturlash tillarida ishlatiladigan funktsiyalar ham raqamlar bilan qaytariladi. Qaysi turdagi funktsiyani qaytarish kerakligini aniqlash uchun qaytarilgan raqam funktsiyadan oldin qayd etiladi. Ammo ba'zi funktsiyalar raqamlarni qaytarmasligi mumkin, bunday funktsiyalar avval bo'sh ariz orqali amalga oshiriladi (A Ilovaga qarang).

Bu qiziqarli dastur qanchalik ko'p narsani ayta oladi.

Bularning barchasi siz dasturda o'qiysiz degan umiddasiz. Va endi biz faqat til qobiliyatidan faqat biz bilgan narsalarimizdan foydalangan holda oddiy tajribalarni bajaramiz. Birinchidan, almashtiring o'zgaruvchan tur Xotirada, baytda juda ko'p joy egallaydi, bir joyda, bitta xotira hujayrasi. Keling, nimaga erishganimizni ko'rib chiqaylik.

bayt Ledpin \u003d 13;

pinmode (LETPIN, chiqish);

digitalWrite (LEDPIN, yuqori);

digitalwrite (LEDPIN, past);

Dasturni modulga kompilyatsiya qilish va yuklab olgandan so'ng, biz dasturdagi o'zgarishlarni qayd etmaymiz. Xop. Keyin men uning ishidagi o'zgarishlarni ko'rish uchun dasturni o'zgartiraman.

Buning uchun biz Raqamni kechiktirish (1000) o'zgaruvchisiga almashtiramiz, uni my_del deb ataymiz. Ushbu o'zgaruvchi butun son, ya'ni int.

int my_del \u003d 5000;

Har bir jamoani vergul bilan tugatishni unutmang. Dasturga o'zgartirish kiritish, uni tuzing va modulga yuklang. Keyin o'zgaruvchini o'zgartiring va kompilyatsiya va yuklashni takrorlang:

bayt my_del \u003d 5000;

Farq, aminmanki, siz aniqroq bo'lasiz.

Biz pauza davomiyligini o'zgartirish bilan yana bir tajriba qilamiz. Pauzalarning davomiyligini kamaytirish, ayting, besh marta. Biz 2 soniya pauza qilamiz, shunda biz bir xil holda besh marta ko'payamiz. Va yana biz 2 soniya pauza qilamiz. Belgilangan vaqtni bajaradigan tsikl deb nomlanadi uchun tsikl Va u shunday deb yozilgan:

uchun (IN I \u003d 0; i<5; i++)

tsiklda bajariladigan narsa

Tsiklni ijro etish uchun u o'zgaruvchan narsaga muhtoj, bizda, siz o'zingiz ajratgan boshlang'ich qiymatini belgilashingiz kerak. Keyin tsiklni to'ldirish sharti bilan biz 5. 5.+ yozish uchun bitta birlik o'zgaruvchini ko'paytirishning C yozuvining belgisiga amal qilamiz. Shakl qavslari tsiklda bajarilishi kerak bo'lgan buyruqlar to'plamini cheklaydi. Boshqa dasturlash tillarida funktsional kod blokini ta'kidlash uchun boshqa cheklovlar bo'lishi mumkin.

Tsikl ichida biz avvalgidek, kichik o'zgarishlar bilan amalga oshiramiz:

uchun (IN I \u003d 0; i<5; i++)

digitalWrite (LEDPIN, yuqori);

digitalwrite (LEDPIN, past);

my_del \u003d my_del - 100;

Biz pauza qayd yozuvini o'zgartirish haqida gaplashdik va pauzadagi o'zgarishlar o'zgaruvchining kamayishi bilan 100 ga kamayishi bilan erishiladi.

Ikkinchi tsikl uchun biz bir xil kod blokini yozamiz, ammo to'xtatib turish davomiyligining o'zgaruvchisi 100 ga oshadi.

uchun (IN I \u003d 0; i<5; i++)

digitalWrite (LEDPIN, yuqori);

digitalwrite (LEDPIN, past);

Siz pauzaning pasayishi qayd etilganligini va uning o'sishi har xil ko'rinishini sezdingiz. Bu shuningdek Si tilining o'ziga xos xususiyati. Aniqlik uchun bo'lsa-da, ushbu yozuvni faqat minusga almashtirish orqali takrorlash kerak edi. Shunday qilib, biz bunday dasturni olamiz:

sT LEDPIN \u003d 13;

int my_del \u003d 1000;

pinmode (LETPIN, chiqish);

uchun (IN I \u003d 0; i<5; i++)

digitalWrite (LEDPIN, yuqori);

digitalwrite (LEDPIN, past);

uchun (IN I \u003d 0; i<5; i++)

digitalWrite (LEDPIN, yuqori);

digitalwrite (LEDPIN, past);

Arduin dasturida bizning dasturimizning kodini nusxalash va uni modulga yo'naltiring. To'xtatishni o'zgartirish sezilarli bo'ladi. Va bu yanada e'tiborli bo'ladi, agar siz tsiklni tugatsangiz, atigi 8.

Biz hozir nima qildik va professional dasturchilar - tayyor dasturga ega bo'lib, u sizning ehtiyojlaringiz yoki xohishingiz ostida osonlikcha o'zgartirilishi mumkin. Shuning uchun ular barcha dasturlarini saqlashadi. Men sizga maslahat beraman va siz.

Sizning tajribangizda nimani sog'indik? Biz bizning ishimiz haqida izoh bermadik. Izohni qo'shish uchun, yo ikki "to'g'ri" qiyshiq chiziq yoki yolg'iz, yulduzlar bilan (A ilovaga qarang). Men buni o'zingiz bajarishga maslahat beraman, chunki dasturga qaytganingizdan so'ng, agar siz ushbu dasturning ma'lum bir joyida qilayotganingizni tushuntirsangiz, uni tushunish osonroq. Shuningdek, men uni har bir dasturni har qanday matn muharririda ishlab chiqarilgan odatdagi tilda saqlash uchun ham papkada maslahat beraman.

"LED LED" ning eng oddiy dasturi hatto o'nlab tajribalar uchun ham xizmat qilishi mumkin (hatto bitta LED). Bu menga ishning bu qismi, siz hali ham qiziqarli, eng qiziqarli bo'lishingiz mumkinligini ixtiro qiling. Agar siz dasturlash tili tasvirlangan dasturni "Dasturni boshqarish" bo'limiga murojaat qilsangiz, siz tsiklning boshqa turiga almashtirishingiz mumkin. Va boshqa turdagi tsikllar qanday ishlashini sinab ko'ring.

Mikrokontroller protsessori bo'lsa-da, bu kabi hisob-kitoblarni (bu va ixtiro qildi) va bu moslamalar ishlatiladi, masalan, qurilmalar, shuningdek, port chiqishini yuqori yoki past darajaga aylantiradi Davlat, ya'ni, "LED qiling", tashqi hodisalarga reaktsiya sifatida.

Tashqi tadbirlar haqida mikrokontroller asosan kirishlar holatida bo'ladi. Portni kiritish uchun port xulosalarini sozlash, biz unga amal qilishimiz mumkin. Agar dastlabki kiritish holati yuqori darajada bo'lsa va tadbir kam holatga kirishiga olib keladi, shunda biz ushbu tadbirga javob berishimiz mumkin.

Eng oson misol bu tugma. Tugmani bosilmasa, yuqori holatda kirish. Agar siz tugmachani bossangiz, kiritish past holatga chiqadi va biz "Cho'milish" ni "yondira olamiz" deb boshlanadi. Keyingi safar siz to'lashingiz mumkin bo'lgan LED tugmasini bosganingizda.

Bu oddiy dasturning oddiy namunasidir. Hatto boshlang'ich ham, u ko'zdan kechirish ehtimoli bo'lishi mumkin. Biroq, ushbu oddiy dastur juda foydali foydalanishi mumkin. Men faqat bitta misolni beraman: biz tugmachani bosgandan so'ng, lekin (ma'lum bir tarzda birlashish). Va LED infraqizil nurlanish bilan shug'ullanadi. Natijada biz boshqaruv panelini olamiz. Bu oddiy dastur.

Dasturning turli versiyalarida misollar ro'yxatida tafovutlar mavjud. Ammo siz dasturning namunasi va sxemasi mavjud bo'lgan dasturda siz jurnalning namunaviy va dasturi mavjud bo'lgan joyda ("Ilovalar» deb nomlangan misolda). Men dasturni nusxa olaman:

sT LEDPIN \u003d 13;

pinmode (LETPIN, chiqish);

pinmose (inpin, kiritish);

agar (raqamli o'qing (inpin) \u003d\u003d yuqori)

digitalWrite (LEDPIN, yuqori);

digitalwrite (LEDPIN, past);

Va ko'rib turganingizdek, biz butunlay yangi dasturni yaratamiz, eskisini o'zgartiramiz. Endi LED tugmani faqat tugmachali bosilganda o'chiradi. 2. Rejil 2-reaktiv 10 kōning 10 kō. Tugmani etkazib berish + 5V-ni va boshqa tugatish uchun yana bir uchi.

Dasturda, agar dasturni boshqarish bo'limidan bo'lsa, yangi til tuzilishi bilan tanishamiz. Bu shunga o'xshash o'qiladi: agar holat qoniqtirsa (qavs ichiga o'ralgan), keyin dastur jingalak qavs ichida amalga oshiriladi. E'tibor bering, bu holatda (Digitalread (Inpin) \u003d\u003d yuqori). Kirishning tengligi ikkita tenglik belgilaridan foydalanib yuqori bo'ldi! Ko'pincha shoshilinch ravishda unutiladi va shart noto'g'ri.

Dasturni ARDUININA MODUL-ga ko'chirib, yuklab olish mumkin. Biroq, dasturning ishlashini tekshirish uchun modulning dizayniga ba'zi o'zgarishlar qilishingiz kerak. Biroq, bu modulning xilma-xilligiga bog'liq. Asl modul kengaytma boshliqlariga ulanish uchun rozetkaga ega. Bunday holda, siz kerakli bitta yadro simlarini kerakli ulagichlarga kiritishingiz mumkin. Mening modulim kengaytma panellari bilan bog'lanish uchun stol kontaktlari mavjud. Men yo mos ulagichni qidirib topa olaman yoki arzonroq, u holatda mos keladigan mikroslovchi panelidan foydalaning.

Ikkinchi savol - Dasturda ishlatiladigan moduldan qanday xulosalar olish mumkin?

Ushbu savol bilan saytdan olgan rasmni aniqlashga yordam beradi: http://roobowwasdile.ru/.

Anjir. 4.1. Boshqaruvchi va Arduino modulining xulosasi va maqsadi

Mening Crafduino modulimning barcha xulosalari belgilanadi, shuning uchun to'g'ri xulosani aniqlash qiyin bo'lmaydi. Siz tugmachani ulashingiz va turar joyni ulashingiz va dasturning ishlashini tekshirishingiz mumkin. Aytgancha, yuqorida aytib o'tilgan sayt Robokratida, butun jarayon rasmlarda paydo bo'ladi (lekin dastur unumli emas!). Men sizga qarashni maslahat beraman.

Ularning tarkibidagi ko'plab mikrokonitoller qo'shimcha apparat moslamalari mavjud. Shunday qilib, Atmega168, ARDUUINA moduli birlashtirilgan ma'lumotlar almashinuvi yordamida boshqa qurilmalar bilan jihozlangan blokga ega. Masalan, kompyuter orqali kompyuter bilan. Yoki qurilgan UART bo'limidan foydalangan holda boshqa mikrokontroller bilan. Shuningdek, analog-raqamli konvertor mavjud. Va Latiticaluditor modulyatsiyasi shakllantiruvchisi.

Ikkinchisidan foydalanish - men roba-darmondan ham nusxa ko'chirgan dasturni namoyish etadi. Ammo dasturni dasturdan olish mumkin. Ehtimol, bu Arduino dasturining misollarida.

// Barragan boshchiligidagi xiralashgan

int qiymat \u003d 0; // kerakli qiymatni saqlash uchun o'zgaruvchini

sT LEDPIN \u003d 9; // Raqamli PIN 9 ga ulangan

// pinmod funktsiyasini chaqirishning hojati yo'q

uchun (qiymat \u003d 0; qiymat<= 255; value+=5) // постепенно зажигаем светодиод

analoglash (LEDPIN, qiymat); // chiqish qiymati (0 dan 255 gacha)

kechiktirish (30); // qidirmoq

uchun (qiymat \u003d 255; qiymat\u003e \u003d 0; qiymat- \u003d 5) // asta-sekin Go'sht

analoglash (LEDPIN, qiymat);

Agar biz uchun oldingi yangi dasturda raqamli kiritish funktsiyasi bo'lsa, unda raqamli kiritish funktsiyasi (LEDPIN, qiymat parametrlari) bu dastur parametrlari AQSh o'zgaruvchilariga allaqachon tanish bo'lgan bo'lsa ham. Analg'i kiritish (Analog-to-raqamli konvertor) dan foydalanib, keyinchalik gaplashamiz. Va endi biz dasturlashning umumiy masalalariga qaytamiz.

Dasturlash - bu hamma uchun mavjud bo'lgan narsadir, ammo vaqtni master va dasturlash va dasturlash tilini o'rganish kerak. Bugungi kunda dasturlash dasturini o'rganishga yordam beradigan bir qator dasturlar mavjud. Ulardan biri Arduino modul bilan bevosita bog'liq. Bu Arduino yoki qisqartirilgan S4a uchun folbin deb ataladi. Siz ushbu dasturni quyidagi manzilda topishingiz va yuklab olishingiz mumkin: http://sitiid.eu/scratch/arnino. Dastur nomi qanday aniq tarjima qilinganligini bilmayman, lekin "skretdan boshlash" deb tarjima qilinadi.

S4A loyihasi saytida Windows va Linux uchun versiyalar mavjud, ammo so'nggi operatsion tizim dasturni Debian tarqatish versiyasida o'rnatishga tayyor. Men buni boshqa Linux-lar tarqatish bilan ishlatib bo'lmaydi, deb aytmayman, lekin dastlab Windows-dagi ARDUININA MODUL bilan dasturda qanday ishlashni ko'ramiz.

Dasturni o'rnatgandan so'ng, rus tiliga interfeys odatiy tarzda til almashtirish usulida sozlanishi mumkin.

Anjir. 4.2. Dastur interfeysi Tillashtirish

Birinchi asboblar paneli Agar bossangiz, barcha mumkin bo'lgan dastur interfeysini ko'rsatadi. Rus tilini Bo'limda topish mumkin ...

Anjir. 4.3. Dastur interfeysi bo'yicha foydalanish uchun tillar ro'yxati

... "batafsil ..." deb belgilangan.

Agar siz hech narsa qilmasangiz, to'g'ri derazadagi yozuvlar "qidiruv kengashi ..." qoldiq, ammo modul joylashtirilgan. Arduino modulini S4A-ga ulash uchun siz hali loyiha saytidan biror narsa yuklab olishingiz kerak.

Anjir. 4.4. S4A uchun ARDUININA moduliga yuklash

Ushbu fayl ARDUININA (Sketch) dasturidan boshqa narsa emas. Ya'ni, Arduino muharririga nusxa ko'chirilishi mumkin bo'lgan matnli fayl, modulga kompilyatsiya qilinadi va yuklaydi. Arduino dasturidan chiqqaningizdan so'ng, siz S4a dasturini ishga tushirishingiz mumkin va endi modul joylashgan.

Anjir. 4.5. Modulni dasturga ulash

Modulning analog kirishi ulanmagan, shuningdek raqamli, shuning uchun modul uchun ko'rsatiladigan qiymatlar tasodifiy ravishda tasodifiy o'zgarib turadi.