Mündəricat:

Elektrik Ruhu səviyyəsi yaradın: 15 addım
Elektrik Ruhu səviyyəsi yaradın: 15 addım

Video: Elektrik Ruhu səviyyəsi yaradın: 15 addım

Video: Elektrik Ruhu səviyyəsi yaradın: 15 addım
Video: Ən çətin məntiq testi.😉 Kim tapsa 1-ci yer. Yalnız 1 nəfər.❗❗ 2024, Iyul
Anonim
Elektrik Ruhu səviyyəsi yaradın
Elektrik Ruhu səviyyəsi yaradın

Əlavə edilmiş hər hansı bir cismin əyilməsini tez və asanlıqla göstərmək üçün bu ruh səviyyəsindən istifadə edin!

Raffles İnstitutundan Kaitlyn tərəfindən hazırlanmışdır.

Addım 1: Məqsədlər

Mikro: bitin quraşdırılmış sürətləndiricisi ilə əyilməyi oxumağı öyrənin.

Micro: bit 5x5 LED Ekran ilə işləməyi öyrənin!

Addım 2: Materiallar

1 x BBC mikro: bit

1 x Mikro USB kabeli

2 x AA Batareya

1 x Cüt AA Batareya Paketi

Addım 3: Əvvəlcədən Kodlaşdırma: Mikro: Bitinizi bağlayın

  1. Mikro USB kabelindən istifadə edərək BBC micro: bit -i kompüterinizə qoşun.
  2. Makecode.microbit.org saytında micro: bit üçün javascript redaktoruna daxil olun.

Addım 4: Adım 0: Kod axını

Kodu yazmağa başlamazdan əvvəl, proqramla nəyə nail olmaq istədiyimizə və hər bir komponentin hansı ardıcıllıqla işləməli olduğuna qərar verməliyik.

Elektrik ruhu səviyyəsi üçün, hər bir döngə üçün kodda atacağımız addımlar:

  • Akselerometrdən əyilmə oxunuşlarını oxuyun.
  • Tilt oxunuşlarını LED matrisində göstəriləcək əyilmə səviyyəsinə çevirin.
  • Əvvəlki döngədən əyilmə səviyyəsi oxunuşlarında dəyişiklik olub olmadığını yoxlayın.
  • Fərqli əyilmə halları və istiqamətləri üçün bir sıra LED koordinatları yaradın.
  • LED koordinatlarını mikro: bit LED matrisinə çəkin.

Daxil etməli olduğumuz bir neçə əlavə funksiya bunlardır:

  • İlkin əyilmə mövqeyi üçün kalibrləmə.
  • Varsayılan əyilmə kalibrinə qayıdır.

Addım 5: Adım 1: Dəyişənlərin müəyyən edilməsi

Göstərildiyi kimi lazım olan dəyişənləri təyin etməklə başlayırıq. Bir neçə dəyişənə bölünmə aşağıdakılardır:

  • tiltList: 0-4 dəyərlərindən olan əyilmə dərəcəsini [Sol, Sağ, İrəli, Geri] qaydada saxlayan dizi
  • tiltBoundary: 0 (əyilmə) ilə 1 (yüngül əyilmə) arasındakı birinci əyilmə səviyyəsinin sərhədi
  • prevState: Əvvəlki döngədəki mikro: bitin əyilmə dəyərlərini tiltList ilə eyni formatda saxlayan dizi, yinelemeler arasında meyl dəyişikliyini yoxlamaq üçün istifadə olunur.
  • ledPlotList: (x, y) formasında led koordinat dizilərini qurun. Bir sıra təyin etmək üçün növ: tipli dəyişənlərin daxil edilmiş bir sıra göstərmək üçün tip nömrəsini istifadə edirik.

Addım 6: Addım 2: Tilt dəyərlərini səviyyələrə çevirin

5x5 LED matrisi yalnız bu qədər məlumat göstərə bildiyindən, əyilmənin əsl dəyərləri ekran üçün faydalı olmayacaq.

Bunun əvəzinə tiltExtent () funksiyası, əyilmə dəyərini akselerometrdən ifadə edən num parametrini alır və bu əyilmə dəyərlərini (num) 0 -dan 4 -ə qədər əyilmə səviyyəsinə çevirir.

0 verilən istiqamətdə əyilmənin olmadığını və 4 çox böyük əyilmənin olduğunu göstərir, səhv olduqda -1 qaytarılır.

Burada tiltBoundary və tiltSensitivity tilt səviyyələri arasındakı sərhəd dəyərləri olaraq istifadə olunur.

Addım 7: Addım 3: Tilt səviyyələrini tərtib edin

İki funksiya checkRoll () və checkPitch () tiltExtent () -dən əldə edilən əyilmə səviyyələrini müvafiq olaraq rul (sol-sağ) və meydança (irəli-geri) oxları üçün tiltList-ə yazır.

Tilt dəyərlərini istifadə etməzdən əvvəl, daha sonra yazılmış bir kalibrləmə funksiyasından əldə edilən həm meydança (zeroPitch), həm də rulon (zeroRoll) üçün sıfırlanmış bir dəyər istifadə edərək onları kalibr edirik.

Sürətölçən oxunuşları həm sol, həm də irəli əyilmə üçün mənfi olduğu üçün bu iki istiqamət üçün parametr olaraq tiltExtent () funksiyasına veriləcək mənfi dəyərin modulunu əldə etmək üçün Math.abs () funksiyasından istifadə etməliyik.

Addım 8: Addım 4: LEDPlotList Funksiyalarını yazın

TiltList -də əyilmə səviyyələrini əldə etdikdən sonra, ortaya çıxa biləcək fərqli hallar üçün LED qurma funksiyalarını yaza bilərik.

  • plotSingle (): Parametr olaraq verilən istiqamətdə əyilmə dərəcəsini nəzərə alaraq yalnız bir istiqamətə əymək.
  • plotDiagonal (): Parametr olaraq hər iki istiqamətdə əyilmə dərəcəsini nəzərə alaraq eyni böyüklükdə iki istiqamətdə əymək.
  • plotUnequal (): Parametr olaraq hər istiqamətdə əyilmə dərəcəsini nəzərə alaraq müxtəlif böyüklüklərdə iki istiqamətdə əymək. Əvvəlcə plotDiagonal () istifadə edir və sonra ledPlotList sırasına əlavə edir.

Bu qurma funksiyaları ledPlotList -ə daha sonra qurulacaq bir çox led koordinat yazır.

Addım 9: Addım 5: Hər bir İş üçün LED Matrisini qurun

Addım 4 -dəki üç haldan qrafik funksiyalarından istifadə edərək, indi mümkün olan əyilmə səviyyələrinin fərqli birləşmələri üçün əsl LED matrisini qura bilərik. 4 -cü addımdakı üç funksiya istiqamətə görə ayrı -seçkilik etmədiyindən, LEDləri doğru istiqamətlərə çəkmək üçün LED matrisinə verilən koordinat dəyərlərini tənzimləməliyik.

PlotResult (), əyilmə növünü yoxlayan və LED matrisini led.plot (x, y) istifadə edərək buna uyğun quran şərtlər ehtiva edir. Tiltin mümkün birləşmələri:

Tək istiqamət: Yalnız Sol və ya Yalnız Sağ

Tək istiqamət: Yalnız irəli və ya geriyə

İki istiqamət: irəli-sola və ya geriyə-sola

İki istiqamət: irəli-sağa və ya geriyə-sağa

Qeyd: İki istiqamətdə əyilmək üçün hər bir kombinasiya eyni və ya fərqli böyüklüyə malik ola bilər (maxX və maxY -nin müqayisəsi ilə yoxlanılır) və buna görə də sırasıyla plotDiagonal () və ya plotUnequal () istifadə etməklə tərtib edilə bilər.

Addım 10: Addım 6: Kalibrləmə funksiyalarını yazın

Kodun böyük hissəsini tamamladıqdan sonra indi calibTilt () və resetTilt () funksiyalarını əlavə edirik.

calibTilt (), istifadəçilərə mikro: bitin cari mövqeyində meylini sıfıra endirməyə imkan verir

resetTilt () lövhənin kalibrini orijinal vəziyyətinə qaytarır.

Addım 11: Adım 7: Vəziyyət funksiyasını yazın

Tilt səviyyələrinin əvvəlki iterasiyadan dəyişib dəyişmədiyini yoxlamaq üçün sadə bir checkState () funksiyasını əlavə edirik.

Əgər əyilmə səviyyələrində əvvəlki iterasiyadan, yəni stateChange == 0 -dan heç bir dəyişiklik olmazsa, biz lazım olan hesablamanı azaldaraq, növbəti təkrarlamaya keçə və LED matrisinin sxemini atlaya bilərik.

Adım 12: Adım 8: Hamısını Bir yerə qoyun 1 -ci hissə

İndi nəhayət, bütün lazımi funksiyaları dəfələrlə işə salmaq üçün micro: bit -in sonsuz döngəsinə yerləşdirə bilərik.

Əvvəlcə input.onButtonPressed () istifadə edərək, micro: A və B düymələrini calibTilt () və resetTilt () funksiyalarına təyin edirik və kalibrləmə başa çatdıqda LED matrisində bir işarə qururuq.

Addım 13: Adım 9: Hamısını Bir yerə qoyun 2 -ci hissə

Sonra 0 -cı addımdakı kod axınımıza uyğun olaraq lazımi funksiyaları işlədin və vəziyyət dəyişikliyini yoxlayın (yəni, son təkrarlamadan sonra mikro: bit əyilməsində dəyişiklik olduğu deməkdir).

Tilt səviyyələrində bir dəyişiklik varsa, yəni stateChange == 1, kod prevState'i yeni əyilmə səviyyələrinə yeniləyəcək və stateChange'ı növbəti iterasiya üçün yenidən 0 -a qoyacaq və PlotResult () istifadə edərək LED matrisində yenilənmiş əyilmə səviyyələrini təyin edəcək.

Adım 14: Adım 10: Montaj

Tamamlanmış kodu mikro: bit -ə yandırın.

Micro: bit və batareya paketinizi hər hansı bir obyektə etibarlı şəkildə bağlayın və istifadəyə hazırdır!

Əla

Elektrik ruh səviyyənizlə əylənin! Və bunu edərkən, niyə əyilmə sensorunun imkanlarını genişləndirməyə və ya hətta onu oyuna çevirməyə çalışmırsınız?

Bu məqalə TINKERCADEMY -dəndir.

Addım 15: Mənbə

Bu məqalə:

Hər hansı bir sualınız varsa, əlaqə saxlaya bilərsiniz: [email protected].

Tövsiyə: