Мазмұны:

Электрлік рух деңгейін жасаңыз: 15 қадам
Электрлік рух деңгейін жасаңыз: 15 қадам

Бейне: Электрлік рух деңгейін жасаңыз: 15 қадам

Бейне: Электрлік рух деңгейін жасаңыз: 15 қадам
Бейне: Өлді деп жерлемек болған еді. Бірақ Алланың қалауымен тірілген Бала 2024, Қараша
Anonim
Электрлік рух деңгейін жасаңыз
Электрлік рух деңгейін жасаңыз

Тіркелген кез келген заттың қисаюын тез және оңай көрсету үшін осы рух деңгейін қолданыңыз!

Кейтлин Raffles институтынан жасаған.

1 -қадам: Мақсаттар

Еңкейтуді micro: bit қондырылған акселерометрмен оқуды үйреніңіз.

Micro: bit 5x5 жарықдиодты дисплеймен жұмыс істеуді үйреніңіз!

2 -қадам: материалдар

1 x BBC микро: бит

1 x Micro USB кабелі

2 x AA батареялары

1 x қосарлы АА батарея жиынтығы

3 -қадам: Алдын ала кодтау: микро: битке қосыңыз

  1. BBC микро: битін компьютерге микро USB кабелі арқылы қосыңыз.
  2. Makecode.microbit.org сайтынан micro: bit үшін JavaScript редакторына кіріңіз.

4 -қадам: 0 -қадам: Код ағыны

Кодты жазуды бастамас бұрын, біз бағдарламамен қандай нәтижеге қол жеткізгіміз келетінін және әрбір компонент қандай ретпен жұмыс жасау керектігін шешуіміз керек.

Электрлік рух деңгейі үшін әр цикл үшін кодта қолданылатын қадамдар:

  • Көлбеу көрсеткіштерді акселерометрден оқыңыз.
  • Жарық диодты матрицада көрсетілетін көлбеу көрсеткіштерді көлбеу деңгейге түрлендіріңіз.
  • Алдыңғы циклден көлбеу деңгей көрсеткіштерінің өзгеруін тексеріңіз.
  • Әр түрлі көлбеу жағдайлары мен бағыттары үшін жарықдиодты координаттар жиынын жасаңыз.
  • Жарықдиодты координаталарды микро: биттік жарықдиодты матрицаға салыңыз.

Біз қосатын бірнеше қосымша функциялар:

  • Бастапқы көлбеу позиция үшін калибрлеу.
  • Әдепкі көлбеу калибрлеуге оралу.

5 -қадам: 1 -қадам: Айнымалыларды анықтау

Біз суретте көрсетілгендей қажет айнымалыларды анықтаудан бастаймыз. Бірнеше айнымалылардың бөлінуі:

  • tiltList: 0-4 мәндерінің қисаю дәрежесін сақтайтын массив [Солға, Оңға, Алға, Артқа]
  • еңкейту Шекарасы: 0 (еңкейтілмеген) мен 1 (еңкейту) арасындағы бірінші қисайу деңгейінің шекарасы
  • prevState: итерациялар арасындағы көлбеудің өзгеруін тексеру үшін пайдаланылатын tiltList форматындағы алдыңғы циклдегі micro: бит көлбеу мәндерін сақтайтын массив
  • ledPlotList: (x, y) түріндегі жетекші координаталық массивтерді салу. Массивті анықтау үшін біз типті нөмірді қолданып, кірістірілген түрдегі айнымалылар жиынын көрсетеміз: сан.

6 -қадам: 2 -қадам: көлбеу мәндерді деңгейге түрлендіру

5x5 жарық диодты матрицасы тек көп ақпаратты көрсете алатындықтан, көлбеудің нақты мәндері дисплей үшін пайдалы болмайды.

Оның орнына tiltExtent () функциясы акселерометрден көлбеу мәнін білдіретін num параметрін қабылдайды және бұл қисайу мәндерін (num) 0 -ден 4 -ке дейін еңкейту деңгейіне түрлендіреді.

0 берілген бағытта еңкейтуді көрсетпейді және 4 өте үлкен қисайуды көрсетеді, ал қате болған кезде -1 қайтарылады.

Мұнда көлбеу деңгейлер арасындағы шекаралық мәндер ретінде tiltBoundary және tiltSensitivity қолданылады.

7 -қадам: 3 -қадам: көлбеу деңгейлерді құрастырыңыз

CheckRoll () және checkPitch () екі функциясы tiltExtent () -тен алынған көлбеу деңгейлерді тиісінше орама (солға-оңға) және қадамға (алға-артқа) осьтер үшін tiltList-ке жазады.

Көлбеу мәндерді қолданбас бұрын, біз оларды кейінірек жазылған калибрлеу функциясынан алынған қадам (zeroPitch) және орама (zeroRoll) үшін нөлдік мәнді қолданып калибрлейміз.

Акселерометрдің көрсеткіштері солға да, алға да еңкейту үшін теріс болғандықтан, біз осы екі бағыттың параметрі ретінде tiltExtent () функциясына берілетін теріс мәннің модулін алу үшін Math.abs () функциясын қолдануымыз қажет.

8 -қадам: 4 -қадам: LEDPlotList функцияларын жазыңыз

TiltList ішіндегі көлбеу деңгейлерді алғаннан кейін, біз туындауы мүмкін әр түрлі жағдайларға арналған негізгі сызу функцияларын жаза аламыз.

  • plotSingle (): параметр ретінде берілген бағытта еңкейту дәрежесін ескере отырып, тек бір бағытта қисайтыңыз.
  • plotDiagonal (): параметр ретінде екі бағытта еңкейту дәрежесін ескере отырып, бірдей шамада екі бағытта еңкейту.
  • plotUnequal (): параметр ретінде әр бағытта еңкейту дәрежесін ескере отырып, әр түрлі шамадағы екі бағытта еңкейту. Алдымен plotDiagonal () пайдаланады, содан кейін ledPlotList массивіне қосылады.

Бұл графикалық функциялар ledPlotList -ке кейінірек сызылатын координаталар жиынын жазады.

9 -қадам: 5 -қадам: Әр жағдай үшін жарықдиодты матрицаны құрыңыз

4 -қадамдағы үш жағдайдың графикалық функцияларын қолдана отырып, біз көлбеу деңгейлерінің әр түрлі мүмкін комбинациялары үшін нақты жарықдиодты матрицаны құра аламыз. 4 -қадамдағы үш функция бағыт бойынша кемсітпейтіндіктен, светодиодтарды дұрыс бағытта салу үшін жарықдиодты матрицаға берілген координаталық мәндерді реттеу керек.

PlotResult () көлбеу түрін тексеретін және сәйкесінше LED.plot (x, y) көмегімен жарықдиодты матрицаны құратын шарттарды қамтитын бірнеше шарттарды қамтиды. Еңкейтудің мүмкін комбинациясы:

Бір бағыт: тек солға немесе оңға

Бір бағыт: тек алға немесе тек артқа

Екі бағыт: Алға-солға немесе Артқа-солға

Екі бағыт: Алға-оңға немесе Артқа-оңға

Ескерту: Екі бағытта қисайту үшін әр комбинация бірдей немесе әртүрлі шамада болуы мүмкін (maxX пен maxY салыстыру арқылы тексеріледі), демек, сәйкесінше plotDiagonal () немесе plotUnequal () көмегімен сызылады.

10 -қадам: 6 -қадам: Калибрлеу функцияларын жазу

Кодтың негізгі бөлігін аяқтағаннан кейін біз қазір calibTilt () және resetTilt () функцияларын қосамыз.

calibTilt () пайдаланушыларға микро: бит ағымдағы орнында қисайтуды нөлге дейін реттеуге мүмкіндік береді

resetTilt () тақтаның калибрлеуін бастапқы күйіне қайтарады.

11 -қадам: 7 -қадам: күй функциясын жазу

Біз көлбеу деңгейлердің алдыңғы итерациядан өзгергенін тексеру үшін checkState () функциясын қосамыз.

Егер алдыңғы итерациядан, мысалы stateChange == 0, көлбеу деңгейлерде ешқандай өзгеріс болмаса, біз келесі итерацияға тікелей өтіп, жарықдиодты матрицаның сызбасын өткізіп жібере аламыз, бұл үшін қажет есептеулерді азайтады.

12 -қадам: 8 -қадам: Барлығын біріктіру 1 -бөлім

Енді біз бірнеше рет іске қосу үшін барлық қажетті функцияларды micro: bit шексіз циклына орналастыра аламыз.

Алдымен micro: A және B батырмасын calibTilt () және resetTilt () функцияларына input.onButtonPressed () көмегімен орнатамыз және калибрлеу аяқталғанда жарық диодты матрицада белгі қоямыз.

13 -қадам: 9 -қадам: Барлығын біріктіру 2 -бөлім

Содан кейін 0 -қадамдағы код ағынына сәйкес қажетті функцияларды іске қосыңыз және күйдің өзгеруін тексеріңіз (соңғы итерациядан кейін micro: bit көлбеуінің өзгеруі бар екенін білдіреді).

Егер көлбеу деңгейлерде өзгеріс болса, яғни stateChange == 1 болса, код prevState режимін жаңа еңкейту деңгейіне жаңартады және келесі қайталау үшін stateChange мәнін 0 қалпына келтіреді және PlotResult () көмегімен жарық диодты матрицада жаңартылған көлбеу деңгейлерін көрсетеді.

14 -қадам: 10 -қадам: Жинау

Аяқталған кодты micro: bitке жіберіңіз.

Micro: bit пен батарея жинағын кез келген затқа мықтап бекітіңіз және ол пайдалануға дайын!

Тамаша

Өзіңіздің электрлік деңгейіңізбен көңілді болыңыз! Сіз мұны істеп жатқанда, неге көлбеу сенсордың мүмкіндіктерін кеңейтуге немесе оны ойынға айналдыруға тырыспасқа?

Бұл мақала TINKERCADEMY.

15 -қадам: Дереккөз

Бұл мақала:

Егер сізде сұрақтар туындаса, мына мекенжайға хабарласа аласыз: [email protected].

Ұсынылған: