Мазмуну:

Электр рухунун деңгээлин түзүңүз: 15 кадам
Электр рухунун деңгээлин түзүңүз: 15 кадам

Video: Электр рухунун деңгээлин түзүңүз: 15 кадам

Video: Электр рухунун деңгээлин түзүңүз: 15 кадам
Video: Лучшая лошадь и револьвер в rdr2, НЛО ► 2 Прохождение Red Dead Redemption 2 2024, Июль
Anonim
Электр рухунун деңгээлин түзүңүз
Электр рухунун деңгээлин түзүңүз

Тиркелген нерсенин эңкейишин тез жана оңой көрсөтүү үчүн бул деңгээлди колдонуңуз!

Raffles институтунан Кайтлин тарабынан түзүлгөн.

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

Micro: bitтин камтылган акселерометринин жардамы менен эңкейүүнү окуганды үйрөнүңүз.

Micro: bitтин 5x5 LED дисплейи менен иштөөнү үйрөнүңүз!

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

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

1 x Micro USB кабели

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

1 x Double AA Батарея пакети

3 -кадам: Алдын ала коддоо: Микро: Битти туташтырыңыз

  1. Би -Би -Си микро: битти микро USB кабели аркылуу компьютериңизге туташтырыңыз.
  2. Makecode.microbit.org боюнча micro: bit үчүн JavaScript редакторуна кирүү.

4 -кадам: 0 -кадам: Коддун агымы

Кодду жазууну баштоодон мурун, биз программа менен эмнеге жетүүнү каалайбыз жана ар бир компонент кандай тартипте иштеши керек экенин чечишибиз керек.

Электр рухунун деңгээли үчүн, биз ар бир цикл үчүн коддо жасай турган кадамдар:

  • Акселерометрден эңкейиш көрсөткүчтөрдү окуу.
  • LED матрицасында көрсөтүлө турган эңкейиш көрсөткүчтөрүн эңкейиш деңгээлине айландырыңыз.
  • Мурунку циклден эңкейиш деңгээлинин өзгөрүшүн текшериңиз.
  • Ар кандай ийилүү учурлары жана багыттары үчүн LED координаттарынын массивин түзүңүз.
  • Участоктун LED координаттары микро: бит LED матрицасына.

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

  • Баштапкы эңкейүү позициясы үчүн калибрлөө.
  • Демейки ийилүү калибрлөөсүнө кайтуу.

5 -кадам: 1 -кадам: Өзгөрмөлөрдү аныктоо

Биз көрсөтүлгөндөй өзгөрмөлөрдү аныктоодон баштайбыз. Бир нече өзгөрмөлөрдүн бөлүнүшү:

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

6 -кадам: 2 -кадам: Tilt баалуулуктарын деңгээлге айландыруу

5x5 LED матрицасы ушунчалык көп маалыматты көрсөтө алгандыктан, чыныгы кыйшайуу көрсөткүчтөрү дисплей үчүн пайдалуу болбойт.

Анын ордуна, 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ке кийинчерээк пландаштырылуучу LED координаттарынын массивин жазышат.

9 -кадам: 5 -кадам: Ар бир учур үчүн LED Matrix планын түзүңүз

4 -кадамдагы үч учурдун графикалык функцияларын колдонуп, биз азыр ийилген деңгээлдердин ар кандай мүмкүн болгон айкалыштары үчүн чыныгы LED матрицасын түзө алабыз. 4 -кадамдагы үч функция багыты менен айырмаланбагандыктан, LEDди туура багытта пландаштыруу үчүн LED матрицасына өткөрүлгөн координаттык маанилерди тууралашыбыз керек.

PlotResult () эгерде ийилүүнүн түрүн текшерүүчү жана LED.plot (x, y) жардамы менен LED матрицасын түзүүчү шарттарды камтыса. Тилдин мүмкүн болгон айкалыштары:

Бирдиктүү багыт: Солдон гана же Оңдон гана

Бир багыт: Алга гана же Артка

Эки багыт: Алга-солго же Артка-солго

Эки багыт: Алга-оңго же Артка-оңго

Эскертүү: Эки багытта кыйшайуу үчүн, ар бир комбинация бирдей же башка чоңдукка ээ болушу мүмкүн (maxX жана maxY салыштыруу аркылуу текшерилет), демек, тиешелүүлүгүнө жараша plotDiagonal () же plotUnequal () аркылуу пландалган.

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

Коддун негизги бөлүгүн бүтүрүп, биз азыр calibTilt () жана resetTilt () функцияларын кошобуз.

calibTilt () колдонуучуларга микро: биттин учурдагы абалында эңкейүүнү нөлгө чейин бурууга мүмкүндүк берет

resetTilt () тактайдын калибрлөөсүн баштапкы абалына кайтарат.

11 -кадам: 7 -кадам: Мамлекеттик функцияны жазыңыз

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

Эгерде мурунку итерациядан, б.а. stateChange == 0, эңкейиш деңгээлинде эч кандай өзгөрүү болбосо, биз түздөн -түз кийинки итерацияга өтүп, LED матрицасынын графигин өткөрүп жиберип, керектүү эсептөөнү азайта алабыз.

12 -кадам: 8 -кадам: Бардыгын бириктирүү 1 -бөлүк

Эми биз акыры бардык керектүү функцияларды micro: bitтин чексиз циклине кайра -кайра иштете алабыз.

Биринчиден, биз micro: A жана B баскычтарын calibTilt () жана resetTilt () функцияларына тиешелүүлүгүнө жараша input.onButtonPressed () функциясын коюп, калибрлөө аяктагандан кийин LED матрицасына белгини коёбуз.

13 -кадам: 9 -кадам: Баарын бириктирүү 2 -бөлүк

Андан кийин 0 -кадамдагы биздин коддун агымына ылайык керектүү функцияларды иштетип, абалдын өзгөрүшүн текшериңиз (акыркы кайталоодон бери micro: bitтин кыйшайышы өзгөрдү дегенди билдирет).

Эгерде ийилүү деңгээлинде өзгөрүү болсо, башкача айтканда stateChange == 1, код prevState'ди жаңы ийилүү деңгээлине чейин жаңыртып, stateChange'ды кийинки итерация үчүн 0гө кайра коёт жана PlotResult () аркылуу LED матрицасында жаңыланган ийилүү деңгээлин пландаштырат.

14 -кадам: 10 -кадам: Ассамблея

Толтурулган кодду микро: битке жаркылдатыңыз.

Micro: bit жана батарейка пакетиңизди каалаган нерсеге бекиңиз жана ал колдонууга даяр!

Керемет

Электр энергияңыздын деңгээли менен көңүл ачыңыз! Жана сиз муну жасап жатканда, эңкейүү сенсорунун мүмкүнчүлүктөрүн кеңейтүүгө же аны оюнга айландырууга эмне үчүн аракет кылбайсыз?

Бул макала TINKERCADEMYден.

15 -кадам: Булак

Бул макала:

Эгерде сизде кандайдыр бир суроолор болсо, төмөнкү дарекке кайрылсаңыз болот: [email protected].

Сунушталууда: