акселлерометр.как его использовать
Вступление
В этом эксперименте вы рассмотрите пример использования акселерометра, позволяющего сделать чувствительный сигнал о движении из micro: bit. Расширяющий пример, сочетающий использование акселерометра с micro: bit для измерения ориентации micro: bit и использования это контролировать угол сервопривода.
Необходимые запчасти
Вам понадобятся:
- 1x микробит
- 1x набор датчиков для стеам проектов с платой микробит
- 1x плата расширения " РоботБит" или "Базовая плата расширения"
Акселерометр - это датчик, который измеряет силы гравитации, воздействующие на него во всех трех измерениях осей X, Y и Z микросхемы.
Акселерометр может не только измерять силы, воздействующие на микросхему и объект, на котором находится микросхема, но он также может обнаруживать шаги, сотрясения и другие движения, которые имеют определенный паттерн. Кроме того, вы можете использовать акселерометр, чтобы просто определить ориентацию устройства. Вы когда-нибудь задумывались, как ваш телефон узнает, когда вы поворачиваете его из портретного в альбомное? Это все из-за акселерометра в телефоне!
В качестве примера использования акселерометра давайте сделаем проект:
Когда вы нажимаете кнопку A, дисплей микробит показывает треугольник, указывая на то, что будильник активируется через две секунды. После постановки на охрану дисплей станет чистым.
Если вы сейчас попытаетесь переместить микробит, то все светодиоды загорятся, указывая на то, что сработала сигнализация. Положите микробит и затем нажмите кнопку A, чтобы установить будильник снова.
Вот версия для MAKECODE
здесь можно открыть программу в редакторе .
программа работает так:
Блок включения запускается при первом запуске программы после включения или сброса микробита. Это устанавливает переменную z
(ускорение по оси Z) в ноль. Он также устанавливает логическую (true или false) переменную ( alarm triggered
) в false. Переменная alarm triggered
будет использоваться для указания другим частям программы, что сработала сигнализация.
forever
Цикл будет работать снова и снова , и состоит из трех частей, каждая часть будучи if
/ then
блок.
Первый if
/ then
блок проверяет нажатие кнопки A, и если кнопка A нажата, он отображает символ треугольника, ждет две секунды (2000 миллисекунд), а затем считывает ускорение по оси z в переменную z
. Наконец это очищает экран.
Второе условие if / then в forever
блоке проверяет текущее ускорение по оси z по значению, сохраненному в переменной, z
и, если оно меньше, чем сохраненное чтение, с полем 30, оно устанавливает значение переменной alarm triggered
true.
Последняя часть кода определяет, что происходит, когда alarm triggered
переменная равна true. Если сработала сигнализация, на дисплее будет отображаться символ креста, в противном случае дисплей будет очищен. alarm triggered
Переменная будет оставаться верной , пока кнопка A не будет нажата снова.
MicroPython
Вот версия кода для сигнализации движения MicroPython.
- from microbit import *
- z = 0
- alarm_triggered = False
- while True:
- if button_a.was_pressed():
- # Wait for 2 seconds while the alarm is armed
- display.show(Image.TRIANGLE)
- sleep(2000)
- z = accelerometer.get_z() # take a reading while still
- alarm_triggered = False # the alarm is now armed
- # Check to see if acceleration on z axis changed by 30
- if accelerometer.get_z() < z – 30:
- alarm_triggered = True
- if alarm_triggered:
- display.show(Image.NO) # display a cross
- else:
- display.clear()
Код представляет собой почти построчную копию кода блоков JavaScript, но переведен на Python.
сейчас попробуем управлять серво мотором с помощью микробит
подключение
сделайте схему подключения как на картинке
серво подключение
создайте программу
ускорение
acceleration
Блок может быть найден в группе входных блоков. Этот блок возвращает силу притяжения силы тяжести на определенной оси микро: бит (X, Y или Z) и представляет это значение в виде диапазона чисел от -1023 до 1023. В этом случае мы измеряем ось X, которая это поперечный наклон микро: бит. Если вы наклоните микро: бит полностью влево, вы получите значение -1023, а вправо - 1023.
карта
map
Блок выглядит устрашающе, но это один из самых полезных блоков в MakeCode. map
Блок принимает заданную переменную , которая имеет известный диапазон - в этом случае -1023 до 1023 - и «карты» или масштабируется диапазон, значение для другого заданного диапазона. Заданный диапазон, который мы хотим, составляет от 15 до 165, что является хорошим безопасным диапазоном вращения для сервопривода. Итак, в конце -1023 заканчивается равным 0, а 1023 заканчивается как 165 от map
блока.
Что вы должны увидеть
В начале программы сервопривод должен переместиться на 90 градусов, а затем отреагировать на ориентацию микробита. Если вы держите микробит в горизонтальном положении, сервопривод станет на 90 градусов. Затем, если вы наклоните микробит влево, сервопривод переместится на угол 15 градусов. Если вы переместите микробит вправо, сервопривод переместится в сторону 165 градусов.