Elektronikada kompyuterli modellash


Modul turli sifatlarda ishlatilishi


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

Modul turli sifatlarda ishlatilishi mumkin - bu robotning yuragi (yoki 
boshi), u qurilmaning asosi, shuningdek, mikrokontrollerlar bilan ishlashni 
o'zlashtirish uchun qulay konstruktor va boshqalar. 
Yuqorida biz allaqachon modulning kompyuterga ulanishini tekshirish 
uchun oddiy dasturlardan foydalanganmiz. Ba'zilar uchun ular juda oddiy va 
shuning uchun qiziq emasdek tuyulishi mumkin, ammo har qanday murakkab 
dasturlar biz allaqachon uchrashganlarga o'xshash oddiyroq qismlardan iborat. 
Keling, eng oddiy Blink LED dasturi bizga nima haqida aytib berishini 
ko'rib chiqaylik. 
int ledPin = 13; 
pinMode (ledPin, OUTPUT); 
digitalWrite (ledPin, HIGH); 
digitalWrite (ledPin, LOW); 
Birinchidan, LED nima ekanligini eslaylik.Aslida, bu oddiy diod bo'lib, 
uning dizayni tufayli oqim oldinga yo'nalishda oqganda, o'tish porlashni boshlaydi. 
Ya'ni, LEDning porlashi uchun u orqali oqim o'tishi kerak va shuning uchun 
LEDga kuchlanish qo'llanilishi kerak. Va oqim ruxsat etilgan qiymatdan 
oshmasligi uchun rezistorni LED bilan ketma-ket ulash kerak, bu oqim cheklovchi 
qarshilik deb ataladi (qarang A ilovasi, raqamli chiqish). Voltaj LEDga Arduino 
modulining 
asosini 
tashkil 
etuvchi 
mikrokontroller 
tomonidan 
qo'llaniladi.Mikrokontroller, bizning buyruqlarimizni bajaradigan protsessorga 
qo'shimcha ravishda, bir yoki bir nechta kiritish-chiqarish portlariga ega. Muayyan 
port qurilmasini hisobga olmagan holda, aytaylik - port pin chiqishi sifatida 
ishlaganda, uni ikkita holatga ega bo'lgan raqamli mikrosxemaning chiqishi 
sifatida ko'rish mumkin, yoqilgan va o'chirilgan (chiqishda kuchlanish mavjud, 
chiqishda kuchlanish yo'q). 


Lekin bir xil port pin ham kirish vazifasini bajarishi mumkin. Bunday 
holda, u, masalan, raqamli mikrosxemaning kirishi sifatida ifodalanishi mumkin - 
kirishga yuqori yoki past mantiqiy daraja qo'llaniladi (qarang A ilovasi, raqamli 
kirish). 
LEDni qanday miltillashtiramiz: 
Port chiqish pinini yoqing.Port chiqishini o'chirib qo'ying. 
Ammo protsessor juda tez ishlaydi.Miltillovchini sezishga vaqtimiz 
bo'lmaydi.Bu miltillashni sezish uchun biz pauza qo'shishimiz kerak. Ya'ni: 
Port chiqish pinini yoqing.1 soniya pauza qiling. 
Port chiqishini o'chirib qo'ying. 
1 soniya pauza qiling. 
Bu bizning dasturimiz. Protsessor birinchi buyruqni o'qiydi va pinni 
yoqadi, LED yonadi. Keyin protsessor pauza qiladi va chiqishni o'chiradi, LED 
o'chadi. Ammo u faqat bir marta ko'z qisib qo'ydi. 
Jarayon yoki ko'rsatmalar to'plamining takrorlanishi dasturlashda tsikl deb 
ataladi.Har xil turdagi tsikllar qo'llaniladi. Belgilangan sonli marta ishlaydigan 
tsikl mavjud. Bu for tsikli.Ayrim shartlar bajarilgunga qadar davom etadigan 
tsikllar mavjud bo'lib, ular tsiklning til konstruktsiyasining bir qismidir.Va agar 
shart hech qachon bajarilmasa, u holda tsikl cheksiz ko'p marta bajariladi. Bu 
cheksiz halqa. 
Menimcha, mikrokontrollerlar yuqorida ko'rsatilgan dasturlar bilan 
ishlatilmaydi. Ya'ni, bir nechta buyruqlar bir marta bajariladi va boshqaruvchi endi 
ishlamaydi. Qoidaga ko'ra, u ta'minot kuchlanishi qo'llanilishi bilanoq uzluksiz 
ishlaydi.Bu shuni anglatadiki, mikrokontroller cheksiz tsiklda ishlashi kerak. 
Bu void loop () funksiyasi haqida gapiradi, loop - bu tsikl, yopiq tsikl. 
Tsiklni tugatish uchun hech qanday shart yo'q va shuning uchun uni tugatish uchun 
hech qanday shart yo'q. 
Bundan tashqari, biz Arduino moduliga chiqish (OUTPUT) yoki kirish 
(INPUT) uchun qaysi port pinini va qanday foydalanmoqchi ekanligimizni 
aytishimiz kerak. Ushbu maqsadga Arduino tili uchun majburiy bo'lgan void setup 


() funksiyasi, agar u ishlatilmasa ham va pinning ishlash rejimini o'rnatish uchun 
pinMode () buyrug'i xizmat qiladi. 
pinMode (ledPin, OUTPUT); 
Shuningdek, 
til 
konstruktsiyasi 
pin 
raqamini 
aniqlash 
uchun 
o'zgaruvchilardan foydalanadi: 
int ledPin = 13; 
O'zgaruvchilardan 
foydalanish 
qulay.13-pinni 
emas, 
balki 
12-ni 
ishlatmaslikka qaror qilib, o'zgartirishni faqat bitta qatorda amalga oshirasiz. Bu, 
ayniqsa, to'g'ri keladi
katta dasturlar
O'zgaruvchi nomini xohlaganingizcha 
tanlashingiz mumkin, lekin qoida tariqasida, u faqat ramziy bo'lishi kerak va 
ko'pincha belgilar soni cheklangan. Agar o'zgaruvchi nomini noto'g'ri o'rnatgan 
bo'lsangiz, kompilyator sizni tuzatadi deb o'ylayman. 
DigitalWrite (ledPin, HIGH) funktsiyasi belgilangan pinni baland qilib 
qo'yadi, ya'ni pinni yoqadi. 
Va kechikish (1000), siz allaqachon tushunganingizdek, 1000 millisekund 
yoki 1 soniya pauza degan ma'noni anglatadi. 
Int, void kabi prefikslar nimani anglatishini tushunish qoladi.Har qanday 
qiymatlar, har qanday o'zgaruvchilar dastur buyruqlari kabi 
xotirada 
joylashgan.Ko'pincha 8 bitli raqamlar xotira katakchalariga yoziladi.Bu bayt.Lekin 
baytlar 0 dan 255 gacha bo'lgan raqamlardir.Katta raqamlar ikki yoki undan ko'p 
baytni, ya'ni ikki yoki undan ortiq xotira joyini talab qiladi.Protsessorga raqamni 
qanday topish kerakligini tushunish uchun har xil turdagi raqamlar turli xil 
nomlarga ega.Shunday qilib, bayt deb nomlangan raqam bitta katakni egallaydi, int 
(butun) kattaroqdir.Bundan tashqari, dasturlash tillarida ishlatiladigan funktsiyalar 
ham raqamlarni qaytaradi.Funksiya qaysi son turini qaytarishi kerakligini aniqlash 
uchun bu turdagi qaytaruvchi raqam funksiya oldiga yoziladi. Ammo ba'zi 
funktsiyalar raqamlarni qaytarmasligi mumkin, bunday funktsiyalardan oldin bekor 
belgilar mavjud (qarang A ilovasi, o'zgaruvchilar). 
Umid qilamanki, siz bularning barchasi haqida ilovada o'qiysiz.Keling, 
faqat tilning imkoniyatlaridan allaqachon bilgan narsamizdan foydalangan holda 


bir nechta oddiy tajribalar qilaylik.Birinchidan, xotirada juda ko'p joy egallagan int 
tipidagi o'zgaruvchini bayt - bir joy, bitta xotira katakchasi bilan 
almashtiramiz.Keling, nima olishimizni ko'rib chiqaylik. 
bayt ledPin = 13; 
pinMode (ledPin, OUTPUT); 
digitalWrite (ledPin, HIGH); 
digitalWrite (ledPin, LOW); 
Dasturni kompilyatsiya qilish va modulga yuklaganimizdan so'ng, dastur 
ishida hech qanday o'zgarishlarni sezmaymiz. Yaxshi.Keyin dasturni ishidagi 
o'zgarishlarni sezish uchun o'zgartiramiz. 
Buning uchun biz kechikish (1000) funksiyasidagi raqamni my_del nomli 
o‘zgaruvchiga almashtiramiz.Bu o'zgaruvchi butun son bo'lishi kerak, ya'ni int. 
int my_del = 5000; 
Har bir buyruqni nuqta-vergul bilan tugatishni unutmang. Dasturga 
o'zgartirishlar kiriting, uni kompilyatsiya qiling va modulga yuklang. Keyin 
o'zgaruvchini o'zgartiring va qayta kompilyatsiya qiling va yuklang: 
bayt my_del = 5000; 
Ishonchim komilki, farq sezilarli bo'ladi. 
Keling, pauza muddatini o'zgartirish bo'yicha yana bir tajriba qilaylik. Biz 
pauzalarning davomiyligini, aytaylik, besh marta qisqartirishimiz mumkin. Keling, 
2 soniya pauza qilaylik va keyin besh marta kattalashtiramiz. Yana 2 soniya pauza 
qilaylik. Belgilangan ko'p marta bajariladigan sikl for tsikli deb ataladi va 
quyidagicha yoziladi: 
uchun (int i = 0; i<5; i++) 
for tsiklida bajariladigan narsa 
Loopni bajarish uchun unga o'zgaruvchi kerak, bizda i bor, o'zgaruvchini 
biz unga tayinlagan boshlang'ich qiymat bilan o'rnatish kerak. Keyin siklning 
tugash sharti kelib chiqadi, bizda i 5 dan kam bo'ladi. Va i ++ belgisi o'zgaruvchini 
birga oshirishning C tilidagi belgi uchun xarakterlidir. Jingalak qavslar for tsiklida 
bajarilishi mumkin bo'lgan buyruqlar to'plamini cheklaydi.Boshqa dasturlash 


tillarida funktsiya kodlari blokini ajratish uchun boshqa chegaralovchilar bo'lishi 
mumkin. 
Loop ichida biz avvalgidek qilamiz, bir nechta kichik o'zgarishlar bilan: 
uchun (int i = 0; i<5; i++) 
digitalWrite (ledPin, HIGH); 
digitalWrite (ledPin, LOW); 
my_del = mening_del - 100; 
Biz yuqorida pauza yozuvini o'zgartirish haqida gapirgan edik va 
pauzaning o'zini o'zgartirishga o'zgaruvchini 100 ga kamaytirish orqali erishiladi. 
Ikkinchi tsikl uchun biz bir xil kod blokini yozamiz, lekin pauza 
davomiyligi o'zgaruvchisini 100 ga oshiramiz. 
uchun (int i = 0; i<5; i++) 
digitalWrite (ledPin, HIGH); 
digitalWrite (ledPin, LOW); 
Siz pauzani kamaytirish va pauzani oshirishni yozish boshqacha 
ko'rinishini sezasiz. Bu ham C tilining o'ziga xos xususiyati.Aniqlik uchun faqat 
minus belgisini ortiqcha ga o'zgartirib, ushbu yozuvni takrorlash kerak edi. 
Shunday qilib, biz shunday dasturni olamiz: 
int ledPin = 13; 
int my_del = 1000; 
pinMode (ledPin, OUTPUT); 
uchun (int i = 0; i<5; i++) 
digitalWrite (ledPin, HIGH); 
digitalWrite (ledPin, LOW); 
uchun (int i = 0; i<5; i++) 
digitalWrite (ledPin, HIGH); 
digitalWrite (ledPin, LOW); 
Dasturimizning kodini Arduino dasturiga ko'chirib, kompilyatsiya qilamiz 
va modulga yuklaymiz. Pauzalar davomiyligining o'zgarishi sezilarli.Va bu yanada 
sezilarli bo'ladi, agar for tsikli, aytaylik, 8 marta bajarilsa, sinab ko'ring. 


Biz hozir qilgan ishimizni ham professional dasturchilar bajaradi - tayyor 
dasturga ega bo'lgan holda, uni o'z ehtiyojlaringiz yoki xohishingizga mos ravishda 
osongina o'zgartirishingiz mumkin.Shuning uchun ular o'zlarining barcha 
dasturlarini saqlaydilar.Buni sizga ham qilishni maslahat beraman. 
Tajribamizda nimani o'tkazib yubordik?Biz ishimiz haqida hech qanday 
izoh bermadik. Izoh qo'shish uchun ikkita "oldinga" chiziq yoki bitta, lekin 
yulduzcha bilan belgilang (A ilovasiga qarang). Men buni o'zingiz qilishingizni 
maslahat beraman, chunki bir muncha vaqt o'tgach, dasturga qaytganingizdan 
so'ng, dasturda u yoki bu joyda nima qilayotganingiz haqida tushuntirishlar mavjud 
bo'lsa, buni osonroq tushunasiz.Shuningdek, men har bir dastur bilan papkada 
uning tavsifini har qanday matn muharririda yaratilgan oddiy tilda saqlashni 
maslahat beraman. 
Eng oddiy dastur "LEDni miltillash" yana o'nlab tajribalar uchun xizmat 
qilishi mumkin (hatto bitta LED bilan ham). Menimcha, ishning bu qismi, siz yana 
nima qilish mumkinligi haqida o'ylash, eng qiziqarlisi. Agar dasturlash tilini 
tavsiflovchi ilovaga "dasturni boshqarish" bo'limiga murojaat qilsangiz, for tsiklini 
boshqa turdagi tsikl bilan almashtirishingiz mumkin.Va tsiklning boshqa turlari 
qanday ishlashini sinab ko'ring. 
Mikrokontroller protsessori, har qanday boshqa kabi, hisob-kitoblarni 
amalga oshirishi mumkin bo'lsa-da (buning uchun u ixtiro qilingan) va bu, 
masalan, qurilmalarda qo'llaniladi, ammo mikrokontroller uchun eng xarakterli 
operatsiya port chiqishini o'rnatish bo'ladi. tashqi hodisalarga reaktsiya sifatida 
yuqori yoki past holatga, ya'ni "LEDni miltillash". 
Mikrokontroller tashqi hodisalarni asosan kirish holatiga qarab bilib 
oladi.Portning pinlarini raqamli kirish sifatida sozlaganimizdan so'ng, biz uni 
kuzatishimiz mumkin. Agar kirishning boshlang'ich holati yuqori bo'lsa va hodisa 
kirishning past holatga o'tishini qo'zg'atsa, biz ushbu hodisaga javoban biror narsa 
qilishimiz mumkin. 
Eng oddiy misol - kiraverishdagi tugma.Tugma bosilmasa, kirish yuqori 
holatda bo'ladi. Agar biz tugmani bossak, u holda kirish past holatga o'tadi va biz 


chiqishda LEDni "yoqishimiz" mumkin. Keyingi safar tugma bosilganda, LEDni 
o'chirish mumkin. 
Bu yana oddiy dastur misoli. Hatto boshlang'ich uchun ham bu qiziq 
emas.Biroq, bu oddiy dastur juda foydali ilovalarni topishi mumkin. Men bitta 
misol keltiraman: tugmani bosgandan so'ng biz LEDni yoqmaymiz, balki 
miltillaymiz (ma'lum bir tarzda). Keling, infraqizil nurlanish bilan LEDni 
olaylik.Natijada biz boshqaruv panelini olamiz.Mana oddiy dastur. 
Dasturning turli versiyalarida misollar ro'yxatida farqlar mavjud. Lekin 
kiritish bilan ishlash uchun misol va dastur diagrammasi ("ilova" deb nomlangan 
misol bo'limi) mavjud bo'lgan ilovadagi til qo'llanmasiga murojaat qilishingiz 
mumkin. Men dasturni nusxalayman: 
int ledPin = 13; 
pinMode (ledPin, OUTPUT); 
pinMode (inPin, INPUT); 
agar (digitalRead (inPin) == YUQORI) 
digitalWrite (ledPin, HIGH); 
digitalWrite (ledPin, LOW); 
Ko'rib turganingizdek, biz eskisini o'zgartirish orqali butunlay yangi 
dasturga ega bo'lamiz.Endi LED faqat tugma bosilganda yonadi, u 2-pinga ulanadi. 
2-pin 10 kŌ qarshilik orqali umumiy simga (tuproq, GND) ulanadi. Tugma bir 
uchida + 5V kuchlanish kuchlanishiga, ikkinchi uchida esa 2-pinga ulangan. 
Dasturda biz dasturni boshqarish bo'limidan if yangi til konstruktsiyasiga 
duch kelamiz. U shunday o'qiladi: agar shart (qavs ichiga olingan) bajarilsa, u 
holda jingalak qavslar ichiga olingan dastur bloki bajariladi. E'tibor bering, 
(digitalRead (inPin) == HIGH) shartida kiritishning yuqori holatga tengligi ikkita 
teng belgi yordamida amalga oshiriladi! Ko'pincha, shoshilinch ravishda, bu 
unutiladi va vaziyat noto'g'ri bo'lib chiqadi. 
Dasturni nusxalash va Arduino moduliga yuklash mumkin. Biroq, 
dasturning ishlashini sinab ko'rish uchun siz modul dizayniga ba'zi o'zgarishlar 
kiritishingiz kerak bo'ladi.Biroq, bu modul turiga bog'liq.Asl modulda kengaytirish 


platalariga ulanish uchun rozetkalar mavjud. Bunday holda, kerakli konnektor 
joylariga mos bir yadroli simlarni kiritishingiz mumkin.Mening modulimda 
kengaytirish platalariga ulanish uchun pichoq kontaktlari mavjud.Men mos 
ulagichni izlashim mumkin yoki arzonroq, DIP paketidagi IC uchun mos 
rozetkadan foydalanishim mumkin. 
Ikkinchi savol - dasturda qo'llaniladigan modulning xulosalarini qanday 
topish mumkin? 
Men 
saytdan 
olingan 
rasm 
buni 
tushunishga 
yordam 
beradi: 
http://robocraft.ru/. 
Guruch. 4.1. Kontroller va Arduino modulining pinlarining joylashuvi va 
maqsadi 
Mening CraftDuino modulimdagi barcha pinlar teglangan, shuning uchun 
kerakli pinni topish oson. Siz tugma va rezistorni ulashingiz va dasturning 
ishlashini tekshirishingiz mumkin. Aytgancha, yuqorida aytib o'tilgan RoboCraft 
saytida butun jarayon rasmlarda ko'rsatiladi (lekin dastur aynan bir xil 
xulosalardan foydalanmaydi!).Men sizga qarashni maslahat beraman. 
Ko'pgina mikrokontrollerlar qo'shimcha apparat qurilmalarini o'z ichiga 
oladi.Shunday qilib, Arduino moduli yig'ilgan Atmega168 seriyali ma'lumotlar 
almashinuvi yordamida boshqa qurilmalar bilan aloqa qilish uchun o'rnatilgan 
UART blokiga ega.Masalan, MAQOMOTI porti orqali kompyuter bilan.Yoki 
o'rnatilgan UART blokidan foydalangan holda boshqa mikrokontroller 
bilan.Analog-raqamli konvertor ham mavjud.Va impuls kengligi modulyatsiyasi 
drayveri. 
Ikkinchisidan 
foydalanish 
men 
RoboCraft 
veb-saytidan 
nusxa 
ko'chiradigan dastur bilan tasvirlangan.Lekin dasturni ilovadan ham olish 
mumkin.Va, ehtimol, bu Arduino misollarida. 
// BARRAGAN tomonidan o'chadigan LED 
int qiymati = 0; // kerakli qiymatni saqlash uchun o'zgaruvchi 
int ledpin = 9; // LED raqamli pin 9 ga ulangan 
// PinMode funksiyasini chaqirish shart emas 


uchun 
(qiymati 

0; 
qiymat<= 
255; 
value+=5) 
// 
постепеннозажигаемсветодиод 
analogWrite (ledpin, qiymat); // chiqish qiymati (0 dan 255 gacha) 
kechikish (30); // kuting 🙂 
uchun (qiymat = 255; qiymat> = 0; qiymat- = 5) // LEDni asta-sekin 
o'chiring 
analogWrite (ledpin, qiymat); 
Agar oldingi dasturda raqamli kiritishni o'qish uchun digitalRead (inPin) 
funksiyasi biz uchun yangi bo'lsa, bu dasturda analogWrite (ledpin, qiymat) 
funksiyasi biz uchun yangi, garchi bu funksiyaning parametrlari allaqachon tanish 
o'zgaruvchilar bo'lsa-da. Analog kiritishdan foydalanish, ADC (analog-raqamli 
konvertor) dan foydalanish haqida keyinroq gaplashamiz.Endi umumiy dasturlash 
masalalariga qaytaylik. 
Dasturlash hamma uchun mavjud bo'lgan narsa, lekin dasturlashni ham, 
istalgan dasturlash tilini ham o'zlashtirish uchun vaqt kerak bo'ladi. Bugungi kunda 
dasturlashni o'zlashtirishga yordam beradigan bir qancha dasturlar mavjud.Va 
ulardan biri bevosita Arduino moduli bilan bog'liq. U Arduino uchun Scratch yoki 
qisqacha S4A deb ataladi. Siz ushbu dasturni quyidagi manzilda topishingiz va 
yuklab olishingiz mumkin: http://seaside.citilab.eu/scratch/arduino. Dasturning 
nomi qanday tarjima qilinganini bilmayman, lekin "to start from nol" "noldan 
boshlash" deb tarjima qilinadi. 
S4A loyihasi saytida Windows va Linux uchun versiyalar mavjud, ammo 
so'nggi operatsion tizim uchun Debian tarqatish versiyasida o'rnatishga tayyor 
dastur mavjud. Uni boshqa Linux distributivlari bilan ishlatib bo'lmaydi, demoqchi 
emasman, lekin avval Windows-dagi Arduino moduli bilan dasturda qanday 
ishlashni ko'rib chiqamiz. 
Dasturni odatiy tarzda o'rnatganingizdan so'ng, til o'zgartirgich yordamida 
interfeysni rus tiliga sozlashingiz mumkin. 



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