Elektronikada kompyuterli modellash
Download 200.52 Kb. Pdf ko'rish
|
RGB led
- Bu sahifa navigatsiya:
- Orasida nima bolyapti { }
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling