Съдържание:

Създайте електрическо ниво: 15 стъпки
Създайте електрическо ниво: 15 стъпки

Видео: Създайте електрическо ниво: 15 стъпки

Видео: Създайте електрическо ниво: 15 стъпки
Видео: 15 ЧОВЕКА, които ТРЯБВА да отидат в АДА за творенията си 2024, Юли
Anonim
Създайте електрически нивелир
Създайте електрически нивелир

Използвайте този нивелир за бързо и лесно показване на наклона на всеки прикрепен обект!

Създадено от Kaitlyn от Raffles Institution.

Стъпка 1: Цели

Научете се да четете наклона с вградения акселерометър micro: bit.

Научете се да работите с 5x5 LED дисплей на micro: bit!

Стъпка 2: Материали

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

1 x Micro USB кабел

2 x AA батерии

1 x двойна батерия AA

Стъпка 3: Предварително кодиране: Свържете вашия Micro: Bit

  1. Свържете BBC micro: bit към компютъра си с помощта на микро USB кабел.
  2. Достъп до редактора на javascript за micro: bit на адрес makecode.microbit.org.

Стъпка 4: Стъпка 0: Кодов поток

Преди да започнем да пишем кода, трябва да решим какво искаме да постигнем с програмата и в какъв ред трябва да работи всеки компонент.

За електрическия нивелир стъпките, които ще предприемем в кода за всеки цикъл, са:

  • Прочетете показанията за наклон от акселерометъра.
  • Конвертирайте показанията на наклона в нива на наклон, които да се показват на LED матрицата.
  • Проверете за промяна в показанията на нивото на наклона от предишния цикъл.
  • Създайте масив от LED координати за различни наклонени случаи и посоки.
  • Начертайте LED координати върху micro: битова LED матрица.

Няколко допълнителни функции, които трябва да включим, са:

  • Калибриране за начална позиция на накланяне.
  • Връщане към стандартното калибриране на наклона.

Стъпка 5: Стъпка 1: Дефиниране на променливи

Започваме с дефиниране на необходимите променливи, както е показано. Разбивка на няколко променливи е:

  • tiltList: Масив, който съхранява степента на наклон от стойности 0-4 в реда [Наляво, надясно, напред, назад]
  • tiltBoundary: Граница на първото ниво на наклон между 0 (без накланяне) и 1 (леко накланяне)
  • prevState: Масив, който съхранява стойностите на наклона на micro: bit от предишен цикъл в същия формат като tiltList, използван за проверка за промяна в наклона между итерациите
  • ledPlotList: Начертайте водещи координатни масиви под формата (x, y). За да дефинираме масив, използваме номер номер , за да посочим вложен масив от променливи от тип: число.

Стъпка 6: Стъпка 2: Преобразувайте стойностите на наклона в нива

Тъй като 5x5 LED матрицата може да показва само толкова много информация, действителните стойности на наклона няма да бъдат полезни за показване.

Вместо това функция tiltExtent () взема параметъра num, който се отнася до стойността на накланяне от акселерометъра, и преобразува тези стойности на накланяне (num) в нива на накланяне от 0 до 4.

0 показва, че няма наклон в дадената посока, а 4 показва много голям наклон, докато -1 се връща, когато има грешка.

Тук tiltBoundary и tiltSensitivity се използват като гранични стойности между нивата на накланяне.

Стъпка 7: Стъпка 3: Компилирайте нивата на накланяне

Двете функции checkRoll () и checkPitch () записват нивата на накланяне, получени от tiltExtent () в tiltList за осите на ролката (ляво-дясно) и височината (напред-назад) съответно.

Преди да използваме стойностите на наклона, ги калибрираме, като използваме нулирана стойност както за височина (zeroPitch), така и за ролка (zeroRoll), получена от функция за калибриране, написана по -късно.

Тъй като показанията на акселерометъра са отрицателни както за наклон наляво, така и напред, трябва да използваме функцията Math.abs (), за да получим модула на отрицателната стойност, която трябва да се даде на функцията tiltExtent () като параметър за тези две посоки.

Стъпка 8: Стъпка 4: Напишете функциите на LEDPlotList

След като получихме нивата на наклон в tiltList, сега можем да напишем водещите функции за нанасяне на графики за различните случаи, които могат да възникнат, а именно

  • plotSingle (): Накланяне само в една посока, като се приема степента на наклон в дадена посока като параметър.
  • plotDiagonal (): Наклонете се в две посоки със същата величина, като вземете степента на наклон във всяка посока като параметър.
  • plotUnequal (): Наклон в две посоки с различни величини, като се приема степента на наклон във всяка посока като параметър. Използва първо plotDiagonal () и след това добавя към масива ledPlotList.

Тези графични функции записват масив от водещи координати в ledPlotList, който да бъде нанесен по -късно.

Стъпка 9: Стъпка 5: Начертайте LED матрица за всеки случай

Използвайки графичните функции от трите случая в стъпка 4, сега можем да начертаем действителната LED матрица за различните възможни комбинации от нива на накланяне. Тъй като трите функции в стъпка 4 не различават посоката, трябва да коригираме стойностите на координатите, предадени на LED матрицата, за да начертаем светодиодите в правилните посоки.

PlotResult () съдържа множество if условия, които проверяват вида на наклона и съответно начертават LED матрицата, използвайки led.plot (x, y). Възможните комбинации от наклон са:

Единична посока: само отляво или само отдясно

Единична посока: само напред или само назад

Две посоки: напред-наляво или назад-наляво

Две посоки: напред-надясно или назад-надясно

Забележка: За накланяне в две посоки, всяка комбинация може да има еднаква или различна величина (проверява се чрез сравняване на maxX и maxY) и следователно се нанася с помощта на plotDiagonal () или plotUnequal () съответно.

Стъпка 10: Стъпка 6: Напишете функции за калибриране

След като завършихме по -голямата част от кода, сега добавяме функциите calibTilt () и resetTilt ().

calibTilt () позволява на потребителите да тарират наклона до нула в текущата позиция на micro: bit

resetTilt () връща калибрирането на платката до първоначалното й състояние.

Стъпка 11: Стъпка 7: Функция за запис на състояние

Добавяме проста функция checkState (), за да проверим дали нивата на накланяне са се променили от предишна итерация.

Ако няма промяна в нивата на наклон от предишна итерация, т.е. stateChange == 0, можем директно да преминем към следващата итерация и да пропуснем начертаването на LED матрицата, намалявайки необходимото изчисление.

Стъпка 12: Стъпка 8: Всичко заедно Част 1

Сега най -накрая можем да поставим всички необходими функции в безкрайния цикъл на micro: bit, за да го изпълняваме многократно.

Първо, настройваме бутоните A и B на micro: bit към функциите calibTilt () и resetTilt () съответно, като използваме input.onButtonPressed (), и нанасяме отметка върху LED матрицата, когато калибрирането приключи.

Стъпка 13: Стъпка 9: Обединяване на всичко, част 2

След това изпълнете необходимите функции според нашия кодов поток в Стъпка 0 и проверете за промяна на състоянието (което означава, че има промяна в наклона на micro: bit от последната итерация).

Ако има промяна в нивата на наклон, т.е. stateChange == 1, кодът ще актуализира prevState до новите нива на накланяне и ще зададе stateChange обратно на 0 за следващата итерация и ще начертае актуализираните нива на накланяне на LED матрицата, използвайки PlotResult ().

Стъпка 14: Стъпка 10: Сглобяване

Мигайте завършения код към вашия micro: bit.

Прикрепете вашия micro: bit и батерията здраво към всеки предмет и е готов за употреба!

Страхотно

Забавлявайте се с електрическото си духово ниво! И докато сте в това, защо не опитате да разширите възможностите на сензора за наклон или дори да го превърнете в игра?

Тази статия е от TINKERCADEMY.

Стъпка 15: Източник

Тази статия е от:

Ако имате въпроси, можете да се свържете с: [email protected].

Препоръчано: