Elektronikada kompyuterli modellash


Download 200.52 Kb.
Pdf ko'rish
bet11/13
Sana17.06.2023
Hajmi200.52 Kb.
#1522969
1   ...   5   6   7   8   9   10   11   12   13
Bog'liq
RGB led

Analog kirish. 
AnalogReadArduino-ning analog pinlaridan biridan ma'lumotlarni o'qish 
imkonini beradi va 0 (0V) dan 1023 (5V) gacha bo'lgan qiymatni chiqaradi. Agar 
analog kirishdagi kuchlanish 2,5V bo'lsa, u holda 2,5 / 5 * 1023 = 512 
bosiladi.AnalogReadfaqat bitta argumentga ega - Bu analog kirish raqami (A0-
A5).Quyidagi eskizda potentsiometrdan kuchlanishni o'qish uchun kod 


ko'rsatilgan. Buning uchun o'zgaruvchan rezistorni, ekstremal terminallarni 5V va 
GND pinlariga va o'rta terminalni A0 kirishiga ulang 
Quyidagi kodni ishga tushiring va ketma-ket monitorda rezistor 
tugmachasining aylanishiga qarab qiymatlar qanday o'zgarishini ko'ring.// analog 
kirish int potPin = A0; // potansiyometrning markaziy pinini ushbu pin bo'sh 
o'rnatishga ulangan () (// analog pin sukut bo'yicha yoqilgan, shuning uchun 
Serial.begin (9600) ishga tushirish kerak emas) void loop () ( int potVal = 
analogRead (potPin); // potVal 0 dan 1023 gacha Serial.println (potVal);) Quyidagi 
eskiz tugmani bosish uchun eskizni va LED yorqinligini boshqarish uchun eskizni 
birlashtiradi. LED tugmachadan yonadi va potansiyometr yorqinlikni boshqaradi. // 
LED chiqishi va o'zgaruvchan intensivlik bilan tugmani bosishni aniqlash int 
buttonPin = 7; int ledPin = 9; int potPin = A0; bekor o'rnatish () (pinMode (tugma 
PIN, INPUT); pinMode (ledPin, OUTPUT); Serial.begin (9600);) bekor tsikl () 
(agar (digitalRead (buttonPin) == HIGH) (// agar tugma bosilsa int analogVal = 
analogRead (potPin); int scaledVal = map (analogVal, 0, 1023, 0, 255); 
analogWrite (ledPin, scaledVal); // LEDni Serial.println pot ("bosilgan");) 
tomonidan o'rnatilgan intensivlik bilan yoqing. (digitalWrite (ledPin, LOW); // 
tugma bosilmasa, o'chiring Serial.println ("bosilmagan");)) 


Birinchidan, siz minimal dasturni to'ldirishingiz kerak. Arduino uchun 
(masalan, UNO) LEDni 12 piniga va GND ga ulang (LEDning rangi shaxsiy 
imtiyozlardan tanlanadi). 
Voidni sozlash () (pinMode (12, OUTPUT);) bekor tsikl () (digitalWrite 
(12, HIGH); kechikish (100); digitalWrite (12, LOW); kechikish (900);) Ctrl + C -
> Ctrl + V ni bajaring, kompilyatsiya qiling, yuklang, hukmronlik qiling. Biz bir 
soniyadan ortiq davom etmaydigan yorug'lik shousini ko'ramiz.Keling, nima uchun 
bu sodir bo'layotganini aniqlaylik. 
Oldin bo'sh bo'lgan bloklarda biz bir nechtasini qo'shdik ifodalar ... Ular 
o'rnatish va pastadir funktsiyalarining jingalak qavslari orasiga joylashtirildi. Har 
bir ifoda protsessor uchun ko'rsatma hisoblanadi. Bir blok ichidagi iboralar birin-
ketin, qat'iy tartibda, hech qanday pauza yoki almashtirishsiz bajariladi. Ya'ni, agar 
biz bitta kod bloki haqida gapiradigan bo'lsak, nima qilinayotganini tushunish 
uchun uni yuqoridan pastgacha o'qish mumkin.Orasida nima bo'lyapti
?Ma'lumki, Arduino pinlari chiqish va kirish sifatida ishlashi mumkin. Biz biror 
narsani nazorat qilmoqchi bo'lganimizda, boshqaruv pinini chiqishda ish holatiga 
qo'yishimiz kerak. Bu funksiyadagi ifoda orqali amalga oshiriladi sozlash:pinMode 
(12, OUTPUT); Bunday vaziyatda ifoda amalga oshiriladifunktsiya chaqiruvi 
PinMode-da ko'rsatilgan pin raqami belgilangan rejimga o'rnatiladi (INPUT yoki 
OUTPUT). Qaysi pin va qaysi rejim haqida gapirayotganimiz qavs ichida vergul 
bilan ajratilgan holda ko'rsatilgan. Bizning holatda, biz 12-pinning chiqish sifatida 
ishlashini xohlaymiz. OUTPUT - chiqish, INPUT - kirish degan ma'noni anglatadi. 
12 va OUTPUT kabi aniq qiymatlar chaqiriladifunktsiya argumentlari 
Funktsiyaning qancha argumentga ega bo'lishi funksiyaning mohiyatiga va uni 
yaratuvchining irodasiga bog'liq. O'rnatish va tsiklda bo'lgani kabi, funktsiyalarda 
hech qanday argument bo'lishi mumkin emas.Keyin, quyidagi tartibda pastadir 
blokiga o'ting:-o'rnatilgan digitalWrite funktsiyasini chaqiring. U berilgan pinga 
mantiqiy nol (LOW, 0 volts) yoki mantiqiy (HIGH, 5 volts) berish uchun 
mo'ljallangan.digitalWrite funksiyasiga 2 ta argument uzatiladi: pin raqami va 
mantiqiy qiymat.-kechiktirish funksiyasini chaqiring. Bu, yana, protsessorni 


ma'lum vaqt davomida "uyqu" qiladigan o'rnatilgan funksiya. Buning uchun faqat 
bitta dalil kerak: uxlash uchun millisekundlardagi vaqt. Bizning holatlarimizda bu 
100 ms. 100ms o'tishi bilan protsessor uyg'onadi va darhol keyingi ifodaga o'tadi.- 
o'rnatilgan digitalWrite funktsiyasini chaqiring. Faqat bu safar, ikkinchi dalil PAY. 
Ya'ni, biz 12-pinda mantiqiy nolni o'rnatamiz -> 0 voltni etkazib beramiz -> 
LEDni o'chiring.- kechiktirish funksiyasiga qo'ng'iroq. Bu safar biz bir oz ko'proq 
"uxlaymiz" - 900 ms.Oxirgi funktsiya bajarilgandan so'ng, tsikl bloki tugaydi va 
hamma narsa qayta-qayta sodir bo'ladi. Aslida, misolda keltirilgan shartlar juda 
o'zgaruvchan va siz kechikish qiymatlari bilan o'ynashingiz, bir nechta LEDlarni 
ulashingiz va uni svetofor yoki politsiya chirog'iga o'xshatib qo'yishingiz mumkin 
(barchasi ijodkorning tasavvuriga va irodasiga bog'liq). ). 
Xulosa
Darhaqiqat, kompilyator uchun barcha bo'shliqlar, qatorlar va yorliqlarning 
ahamiyati yo'q. Bo'sh joy mavjud bo'lgan joyda chiziq uzilishi va aksincha bo'lishi 
mumkin. Darhaqiqat, ketma-ket 10 ta boʻsh joy, 2 ta satr uzilishi va yana 5 ta 
boʻshliq bitta boʻshliqqa teng.Bo'sh joy yordamida siz dasturni tushunarli va vizual 
qilishingiz mumkin, yoki aksincha, uni tanib bo'lmas darajada buzishingiz 
mumkin. Misol uchun, misol dasturini quyidagicha o'zgartirish mumkin:bekor 
o'rnatish () (pinMode (12, OUTPUT);) bekor tsikl () (digitalWrite (12, HIGH); 
kechikish (100); digitalWrite (12, LOW); kechikish (900);) 
1.Har doim, o'rtasida yangi blok boshlanganda(va) chegarani oshiring. 
Odatda 2 yoki 4 bo'sh joy ishlatiladi. Qadriyatlardan birini tanlang va hamma 
joyda unga rioya qiling. 
Void loop () (digitalWrite (12, HIGH); kechikish (100); digitalWrite (12, 
LOW); kechikish (900);)2. Oddiy tilda bo'lgani kabi: verguldan keyin bo'sh joy 
qo'ying.digitalWrite (12, YUQORI);3. Blokning boshlang'ich belgisini (joriy 
chekinish darajasidagi yangi satrga yoki oldingisining oxirida. Va blokning tugash 
belgisini) joriy chekinish darajasidagi alohida qatorga joylashtiring:bekor o'rnatish 
() 
(pinMode 
(12, 
OUTPUT);) 
bekor 
o'rnatish 
() 
(pinMode 
(12, 
OUTPUT);)4. Ma'no bloklarini ajratish uchun bo'sh qatorlardan foydalaning:bekor 


halqa () (digitalWrite (12, YUQORI); kechikish (100); digitalWrite (12, LOW); 
kechikish (900); digitalWrite (12, YUKOR); kechikish (100); digitalWrite (12, 
LOW); kechikish ( 900);)5. Sizning miyangiz o'qish yoqimli bo'lishi uchun 
sharhlar deb ataladigan narsalar mavjud. Bular dastur kodidagi konstruksiyalar 
bo'lib, ular kompilyator tomonidan butunlay e'tiborga olinmaydi va faqat o'quvchi 
uchun mazmunli bo'ladi. Sharhlar ko'p qatorli yoki bir qatorli bo'lishi mumkin:/ * 
bu ko'p qatorli sharh * / // bu bir qatorli 
Arduino modulining dasturlash tilining yadrosi C tilidir (ehtimol 
C++).Aniqrog'i, tilning bu dialekti Processing / Wiring deb ataladi.Ilovada tilning 
yaxshi sharhini topasiz.Va men ko'proq til haqida emas, balki dasturlash haqida 
gapirmoqchiman. 
Dastur - bu protsessor, kompyuteringiz protsessori yoki Arduino 
modulining mikrokontroller protsessori tushunadigan buyruqlar to'plami, bu 
muhim emas. Protsessor buyruqlarni o'qiydi va ularni bajaradi. Protsessor 
tushunadigan har qanday ko'rsatmalar ikkilik raqamlardir. Bu faqat ikkilik 
raqamlar va boshqa hech narsa yo'q. Bir paytlar protsessor mo'ljallangan arifmetik 
amallarni bajarib, protsessor raqamlar ustida ishlaydi.Ikkilik raqamlar.Va ma'lum 
bo'lishicha, buyruqlar ham, ular nazarda tutilgan narsalar ham faqat ikkilik 
raqamlardir. Mana bunday.Ammo protsessor ikkilik raqamlarning bu "uyini" 
qanday tushunadi? 
Birinchidan, bu ikkilik raqamlarning barchasi ketma-ket hujayralarga 
yoziladi
tasodifiy kirish xotirasi
manzillarga ega. Dasturni yuklaganingizda va u 
ishlay boshlaganda, protsessor dasturning birinchi manzilini oladi, u erda buyruq 
yozilishi kerak. Protsessorning raqamlar bilan ishlashini talab qiladigan 
ko'rsatmalarda "identifikatsiya belgilari" mavjud, masalan, keyingi ikkita xotira 
kataklarida ikkita raqam qo'shilishi kerak.Hisoblagich esa, keling, uni buyruq 
hisoblagichi deb ataymiz, bu erda keyingi buyruqning manzili yoziladi, bu holda 
dastur ushbu manzilda keyingi buyruqqa ega bo'lishi uchun manzilni oshiradi. 
Agar dastur to'g'ri ishlamasa yoki protsessor xatoga yo'l qo'yishi mumkin bo'lsa, 


keyin buyruq o'rniga raqamni o'qib chiqsa, protsessor nima qilishi kerakligini 
umuman bajarmaydi va dastur "muzlab qoladi". 
Shunday qilib, har qanday dastur ikkilik sonlar ketma-ketligidir. Dasturlash 
esa ikkilik raqamlarning to'g'ri ketma-ketligini to'g'ri yozish qobiliyatidir. Uzoq 
vaqt oldin dastur yozish uchun dasturlash tillari deb nomlangan maxsus vositalar 
qo'llanila boshlandi. 
Biroq, har qanday dastur, birinchi navbatda, dastur nima qilish kerakligini 
va nima uchun ekanligini aniq tushunishingizni talab qiladi. Buni qanchalik aniq 
tushunsangiz, dastur yaratish shunchalik oson bo'ladi. Kichik dasturlar, garchi 
qaysi dasturlar kichik va qaysi biri kichik ekanligini aniqlash qiyin bo'lsa-da, ularni 
bir butun sifatida ko'rish mumkin. Murakkab dasturlarni mustaqil dasturlar deb 
hisoblash mumkin bo'lgan qismlarga bo'lish yaxshiroqdir. Bu ularni yaratishni 
yaxshiroq, disk raskadrovka qilishni va sinovdan o'tkazishni osonlashtiradi. 
Men bahslashishga tayyor emasman, lekin oddiy tilda tavsif bilan dasturni 
boshlash qulayroq deb o'ylayman.Va shu ma'noda, men dasturlashni dastur kodini 
yozish bilan aralashtirib yubormaslik kerak deb hisoblayman. Agar dastur oddiy 
so'zlar bilan tasvirlangan bo'lsa, masalan, dastur kodini yaratish uchun qaysi 
dasturlash tilini tanlash kerakligini aniqlash osonroq bo'ladi. 
Ikkilik sonlar yordamida dastur yozishga eng yaqin narsa bu assembler 
tilidir.U til buyruqlarining protsessor tushunadigan ikkilik buyruqlarga mos kelishi 
bilan tavsiflanadi. Ammo assembler tili dasturlarini kodlash ko'proq kuch talab 
qiladi va rasmiy operatsiyalarga qaraganda san'atga yaqinroqdir. Basic yoki C kabi 
yuqori darajadagi tillar ko'p qirrali va ulardan foydalanish osonroq. Uzoq vaqt 
davomida umuman dasturlarni yozish uchun grafik tildan foydalanilgan va yaqinda 
bu tildan protsessorlar tiliga "tarjimonlar" paydo bo'ldi. 
Umumiy qo'llaniladigan dasturlash tillaridan tashqari, har doim dasturlash 
tillarining ma'lum bir ixtisoslashuvi mavjud bo'lgan va maxsus tillar mavjud. 
Ikkinchisiga Arduino modulining dasturlash tilini ham kiritgan bo'lardim. 


Modul bizga kerakli narsani bajarishi uchun unga aytilishi kerak bo'lgan 
hamma narsa qulay buyruqlar to'plamiga joylashtirilgan.Lekin birinchi navbatda, 
Arduino-dan bizga nima kerak? 

Download 200.52 Kb.

Do'stlaringiz bilan baham:
1   ...   5   6   7   8   9   10   11   12   13




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling