Mundarija:

Elektr ruhi darajasini yarating: 15 qadam
Elektr ruhi darajasini yarating: 15 qadam

Video: Elektr ruhi darajasini yarating: 15 qadam

Video: Elektr ruhi darajasini yarating: 15 qadam
Video: 9. Fasting: God's Secret Weapon to Grow Faith (Growing Faith in God Series). 2024, Iyul
Anonim
Elektr ruhiy darajasini yarating
Elektr ruhiy darajasini yarating

Bu ruhiy darajadan biriktirilgan har qanday narsaning egilishini tez va oson ko'rsatish uchun foydalaning!

Raffles institutidan Kaylin tomonidan yaratilgan.

1 -qadam: Maqsadlar

Nishabni micro: bit o'rnatilgan akselerometr yordamida o'qishni o'rganing.

Micro: bit -ning 5x5 LED displeyi bilan ishlashni o'rganing!

2 -qadam: materiallar

1 x BBC mikro: bit

1 x Micro USB kabeli

2 x AA batareyasi

1 x ikkita AA batareya to'plami

3 -qadam: Oldindan kodlash: Micro: Bit -ni ulang

  1. Mikro USB kabeli yordamida BBC micro: bit -ni kompyuteringizga ulang.
  2. Makecode.microbit.org saytida micro: bit uchun javascript muharririga kiring.

4 -qadam: 0 -qadam: Kod oqimi

Kodni yozishni boshlashdan oldin, biz dastur bilan nimaga erishmoqchi ekanligimizni va har bir komponent qanday tartibda ishlashi kerakligini hal qilishimiz kerak.

Elektr ruhi darajasi uchun har bir tsikl uchun kodda bajariladigan qadamlar:

  • Nishab ko'rsatkichlarini akselerometrdan o'qing.
  • Burilish ko'rsatkichlarini LED matritsasida ko'rsatiladigan egilish darajasiga aylantiring.
  • Oldingi tsiklning egilish darajasi ko'rsatkichlarining o'zgarishini tekshiring.
  • Har xil burilish holatlari va yo'nalishlari uchun LED koordinatalari qatorini yarating.
  • LED koordinatalarini mikro: bitli LED matritsaga joylashtiring.

Biz qo'shishimiz kerak bo'lgan bir nechta qo'shimcha funktsiyalar:

  • Nishabning dastlabki holatini kalibrlash.
  • Tilt kalibrlash standart holatiga qaytadi.

5 -qadam: 1 -qadam: O'zgaruvchilarni aniqlash

Biz ko'rsatilgandek kerakli o'zgaruvchilarni belgilashdan boshlaymiz. Bir nechta o'zgaruvchilarning tasnifi:

  • tiltList: 0-4 oralig'idagi egilish darajasini saqlaydigan massiv [Chap, O'ng, Oldinga, Orqaga]
  • tiltBoundary: birinchi burilish darajasining chegarasi 0 (qiyalik yo'q) va 1 (engil burilish)
  • prevState: oldingi tsiklning micro: bit qiyalik qiymatlarini tiltList bilan bir xil formatda saqlaydigan massiv, takrorlanishlar orasidagi burilish o'zgarishini tekshirish uchun ishlatiladi.
  • ledPlotList: (x, y) shaklidagi bosh koordinata massivlarini chizish. Massivni aniqlash uchun biz: tipli raqamdan foydalanib, o'zgarmaydigan turkumli qatorni ko'rsatamiz: raqam.

6 -qadam: 2 -qadam: Nishab qiymatlarini darajaga aylantirish

5x5 LED matritsasi juda ko'p ma'lumotni ko'rsatishi mumkinligi sababli, haqiqiy egilish qiymatlari displey uchun foydali bo'lmaydi.

Buning o'rniga, tiltExtent () funktsiyasi akselerometrdan egilish qiymatiga ishora qiluvchi raqamni oladi va bu egilish qiymatlarini (son) 0 dan 4 gacha egilish darajasiga o'zgartiradi.

0 berilgan yo'nalishda qiyalik yo'qligini va 4 juda katta burilishni bildiradi, xato bo'lganda -1 qaytariladi.

Bu erda tiltBoundary va tiltSensitivity moyillik darajalari orasidagi chegara qiymatlari sifatida ishlatiladi.

7 -qadam: 3 -qadam: Nishab darajasini yig'ish

CheckRoll () va checkPitch () funktsiyalari tiltExtent () dan olingan egilish darajasini mos ravishda rul (chapdan o'ngga) va pitch (oldinga-orqaga) o'qlari uchun tiltListga yozadi.

Nishab qiymatlarini ishlatishdan oldin, biz ularni keyinroq yozilgan kalibrlash funktsiyasidan olingan pitch (zeroPitch) va rulon (zeroRoll) uchun nol qiymatidan foydalanib sozlaymiz.

Akselerometr ko'rsatkichlari chap va oldinga egilish uchun manfiy bo'lgani uchun, biz bu ikki yo'nalish uchun parametr sifatida tiltExtent () funktsiyasiga beriladigan manfiy qiymat modulini olish uchun Math.abs () funktsiyasidan foydalanishimiz kerak.

8 -qadam: 4 -qadam: LEDPlotList funktsiyalarini yozing

Nishab darajalarini tiltList -da qo'lga kiritganimizdan so'ng, biz yuzaga kelishi mumkin bo'lgan har xil holatlar uchun chizilgan chizish funktsiyalarini yozishimiz mumkin.

  • plotSingle (): parametr sifatida berilgan tomonga egilish darajasini hisobga olgan holda, faqat bitta yo'nalishda egish.
  • plotDiagonal (): parametr sifatida har ikki tomonga egilish darajasini hisobga olgan holda, bir xil kattalikdagi ikki tomonga burilish.
  • plotUnequal (): parametr sifatida har bir tomonga egilish darajasini hisobga olgan holda, har xil kattalikdagi ikki tomonga burish. Avval plotDiagonal () dan foydalanadi va keyinchalik ledPlotList qatoriga qo'shiladi.

Bu chizish funktsiyalari keyinchalik chizish uchun ledPlotList -ga bir nechta LED koordinatalarini yozadi.

9 -qadam: 5 -qadam: Har bir holat uchun LED matritsasini chizish

4 -qadamdagi uchta holatning chizish funktsiyalaridan foydalanib, biz har xil egilish darajasining mumkin bo'lgan kombinatsiyasi uchun haqiqiy LED matritsasini chizishimiz mumkin. 4 -qadamdagi uchta funktsiya yo'nalish bo'yicha farq qilmagani uchun, LEDlarni to'g'ri yo'nalishlarda chizish uchun LED matritsasiga berilgan koordinata qiymatlarini sozlashimiz kerak.

PlotResult () egilish turini tekshiradigan va LED matritsasini mos ravishda led.plot (x, y) yordamida belgilaydigan shartlarni o'z ichiga oladi. Tiltning mumkin bo'lgan kombinatsiyasi:

Yagona yo'nalish: faqat chapga yoki faqat o'ngga

Yagona yo'nalish: faqat oldinga yoki orqaga

Ikki yo'nalish: oldinga-chapga yoki orqaga-chapga

Ikki yo'nalish: oldinga-o'ngga yoki orqaga-o'ngga

Eslatma: Ikki tomonga burilish uchun har bir kombinatsiya bir xil yoki har xil kattalikka ega bo'lishi mumkin (maxX va maxY solishtirish orqali tekshiriladi) va shuning uchun mos ravishda plotDiagonal () yoki plotUnequal () yordamida chiziladi.

10 -qadam: 6 -qadam: Kalibrlash funktsiyalarini yozing

Kodning asosiy qismini to'ldirgandan so'ng, biz endi calibTilt () va resetTilt () funktsiyalarini qo'shamiz.

calibTilt () foydalanuvchilarga mikro: bitning joriy holatini nolga burish imkonini beradi

resetTilt () taxtaning kalibrlanishini asl holatiga qaytaradi.

11 -qadam: 7 -qadam: Davlat funktsiyasini yozing

Burilish darajalari oldingi iteratsiyadan o'zgarmaganligini tekshirish uchun checkState () oddiy funktsiyasini qo'shamiz.

Agar oldingi iteratsiyadan, ya'ni stateChange == 0 dan egilish darajasida hech qanday o'zgarish bo'lmasa, biz to'g'ridan -to'g'ri keyingi iteratsiyaga o'tamiz va LED matritsasini chizishni o'tkazib, kerakli hisobni kamaytira olamiz.

12 -qadam: 8 -qadam: Hammasini birlashtirish 1 -qism

Endi biz nihoyat barcha kerakli funktsiyalarni micro: bitning cheksiz pastadiriga qayta -qayta ishga tushirishimiz mumkin.

Birinchidan, biz micro: bitdagi calibTilt () va resetTilt () funktsiyalariga A va B tugmalarini mos ravishda input.onButtonPressed () yordamida o'rnatamiz va kalibrlash tugagandan so'ng LED matritsasiga belgi qo'yamiz.

13 -qadam: 9 -qadam: Hammasini bir joyga to'plash 2 -qism

Keyin 0 -qadamdagi kod oqimiga muvofiq kerakli funktsiyalarni bajaring va holat o'zgarishini tekshiring (ya'ni, oxirgi takrorlashdan keyin micro: bit egilishida o'zgarish bor).

Agar egilish darajasida o'zgarishlar bo'lsa, ya'ni stateChange == 1 bo'lsa, kod prevState -ni yangi egilish darajalariga yangilaydi va stateChange -ni keyingi iteratsiya uchun 0 -ga qaytaradi va PlotResult () yordamida LED matritsasida yangilangan egilish darajasini belgilaydi.

14 -qadam: 10 -qadam: O'rnatish

Tugallangan kodni micro: bit -ga o'chiring.

Micro: bit va batareya paketini har qanday narsaga mahkam o'rnating va u ishlatishga tayyor!

Ajoyib

O'zingizning elektr ruhiy darajangiz bilan xursand bo'ling! Va siz hozircha, nega qiyalik sensori imkoniyatlarini kengaytirishga yoki hatto uni o'yinga aylantirishga urinmasligingiz kerak?

Bu maqola TINKERCADEMYdan.

15 -qadam: Manba

Bu maqola:

Agar sizda biron bir savol bo'lsa, quyidagi manzilga murojaat qilishingiz mumkin: [email protected].

Tavsiya: