Оглавление:

Создание уровня электрического духа: 15 шагов
Создание уровня электрического духа: 15 шагов

Видео: Создание уровня электрического духа: 15 шагов

Видео: Создание уровня электрического духа: 15 шагов
Видео: Создаем глобус 15 века, накладываем старые карты на современные 2024, Июль
Anonim
Создать уровень электрического духа
Создать уровень электрического духа

Используйте этот спиртовой уровень, чтобы быстро и легко отобразить наклон любого прикрепленного объекта!

Создано Кейтлин из института Raffles.

Шаг 1. Цели

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

Научитесь работать со светодиодным дисплеем micro: bit 5x5!

Шаг 2: материалы

1 x BBC micro: бит

1 кабель Micro USB

2 батарейки типа АА

1 х двойной батарейный блок AA

Шаг 3: Предварительное кодирование: подключите свой Micro: Bit

  1. Подключите BBC micro: bit к компьютеру с помощью кабеля micro USB.
  2. Получите доступ к редактору javascript для micro: bit на сайте makecode.microbit.org.

Шаг 4: Шаг 0: поток кода

Прежде чем мы начнем писать код, нам нужно решить, чего мы хотим достичь с помощью программы и в каком порядке должен запускаться каждый компонент.

Для электрического спиртового уровня шаги, которые мы предпримем в коде для каждого цикла:

  • Считайте показания наклона с акселерометра.
  • Преобразуйте показания наклона в уровни наклона, которые будут отображаться на светодиодной матрице.
  • Проверьте изменение показаний уровня наклона по сравнению с предыдущим циклом.
  • Создайте массив координат светодиодов для различных случаев наклона и направлений.
  • Нанесите координаты светодиода на микробитовую светодиодную матрицу.

Нам необходимо включить несколько дополнительных функций:

  • Калибровка начального положения наклона.
  • Возврат к калибровке наклона по умолчанию.

Шаг 5: Шаг 1: Определение переменных

Начнем с определения необходимых переменных, как показано. Разбивка по нескольким переменным:

  • tiltList: массив, в котором хранятся значения наклона от 0 до 4 в порядке [влево, вправо, вперед, назад].
  • tiltBoundary: граница первого уровня наклона между 0 (без наклона) и 1 (небольшой наклон)
  • prevState: массив, в котором хранятся значения наклона micro: bit из предыдущего цикла в том же формате, что и tiltList, используемый для проверки изменения наклона между итерациями.
  • ledPlotList: Постройте массивы координат светодиодов в форме (x, y). Чтобы определить массив, мы используем тип number , чтобы указать вложенный массив переменных типа: number.

Шаг 6: Шаг 2: преобразование значений наклона в уровни

Поскольку светодиодная матрица 5x5 может отображать не так много информации, фактические значения наклона не будут полезны для отображения.

Вместо этого функция 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: Постройте светодиодную матрицу для каждого случая

Используя функции построения графиков из трех случаев на шаге 4, теперь мы можем построить фактическую светодиодную матрицу для различных возможных комбинаций уровней наклона. Поскольку три функции на шаге 4 не различают направление, нам необходимо настроить значения координат, передаваемые в матрицу светодиодов, чтобы расположить светодиоды в правильных направлениях.

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

Одно направление: только влево или только вправо

Одно направление: только вперед или только назад

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

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

Примечание. Для наклона в двух направлениях каждая комбинация может иметь одинаковую или разную величину (проверяется путем сравнения maxX и maxY) и, следовательно, строится с использованием plotDiagonal () или plotUnequal () соответственно.

Шаг 10: Шаг 6: Запишите функции калибровки

Завершив основную часть кода, мы добавляем функции calibTilt () и resetTilt ().

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

resetTilt () сбрасывает калибровку платы в исходное состояние.

Шаг 11: Шаг 7: функция записи состояния

Мы добавляем простую функцию checkState (), чтобы проверить, изменились ли уровни наклона по сравнению с предыдущей итерацией.

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

Шаг 12: Шаг 8: Собираем все вместе, часть 1

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

Во-первых, мы устанавливаем кнопки A и B на micro: bit для функций 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].

Рекомендуемые: