Microbit Micropython API

Модуль

Весь функционал расположен в библиотеке:

from microbit import *

В дальнейщем в коде это строка указываться не будет. Вы ее подключаете самостоятельно

Функции доступные на прямую:

# Задержка, указывается в миллисекундах.
sleep(ms)
# возвращает количество миллисекунд с момента последнего включения Microbit.
running_time()
# Переводит Microbit в режим ошибки выполнения.
panic(error_code)
# Перезагрузка Microbit.
reset()
# Устанавливает громкость динамиков.
set_volume(128)    # V2

Остальная функциональность обеспечивается объектами и классами в модуле микробит, как будет описано ниже.

Обратите внимание, что API предоставляет только целые числа (т. е. числа с плавающей запятой не нужны, но они могут быть приняты). Таким образом, мы используем миллисекунды в качестве стандартной единицы времени.

Примечание

Вы можете увидеть список всех доступных модулей, написав help('modules') в REPL.

Кнопки

На микробите встроены 2 кнопки:

button_a
button_b

Объеккты имеют методы:

# возвращает True или False,обозначая была ли кнопка нажата во время вызов метода.
button.is_pressed()
# возвращает True или False, чтобы указать, была ли кнопка нажата после последнего вызова этой метода
button.was_pressed()
# возвращает общее количество нажатий на кнопоку и сбрасывает этот счетчик на ноль
button.get_presses()

Дисплей

Светодиодный дисплей выводится через объект display:

# Возвращает значения яркости пикселя ( от 0 до 9) по координатам x, y.
display.get_pixel(x, y)
# Устанавливает значения яркости пикселя ( от 0 до 9) по координатам x, y.
display.set_pixel(x, y, val)
# Очищает дисплей.
display.clear()
# Выводит изображение на дисплей.
display.show(image, delay=0, wait=True, loop=False, clear=False)
# Может выводить итерируемый объект с задержкой.
display.show(iterable, delay=400, wait=True, loop=False, clear=False)
# Бегущая строка.
display.scroll(string, delay=400)

Звук V2

Команды описывающие работу со звуком:

# Переключение режима работы (тихо, громко).
SoundEvent.LOUD = SoundEvent('loud')
# Переключение в режим повышенных шумов.
SoundEvent.QUIET = SoundEvent('quiet')

Микрофон V2

Доступ к микрофону осуществляется через объект microphone:

# Возвращает имя последнего записанного звукового события

current_event()

# Отследить изменение событий `SoundEvent.LOUD`и `SoundEvent.QUIET`.
# Возвращает true, если звук был слышен хотя бы один раз с момента последнего
# вызов, иначе `false`

was_event(event)

# Кортеж историй звуковых событий

get_events()

#Установка порогового уровня реагирования на звук в диапазоне 0-255. Например,
# `set_threshold(SoundEvent.LOUD, 250)` сработает, только если
# звук очень громкий (>= 250).

set_threshold(128)

# Возвращает представление уровня звукового давления в диапазоне от 0 до 255.

sound_level()

Контакты

Контакты обеспечивают цифровые и аналоговые функции ввода/вывода сигналов. Запомните, что некоторые контакты используются во внутреннем функционале платы (дисплей, кнопки и т. д.). При их использовании необходимо отключать внутренний функционал.

Каждый контакт предоставляется как объект непосредственно в модуле microbit. Этот делает API относительно простым:

  • pin0

  • pin1

  • pin15

  • pin16

  • Предупреждение: P17-P18 (включительно) недоступны.

  • pin19

  • pin20

  • pin_logo V2

  • pin_speaker V2

Каждый контакт является экземпляром класса MicroBitPin, который предлагает следующий API:

# Отправляет цифровой сигнал (может быть 0, 1, False, True)

pin.write_digital(value)

# Возвращает цифровой сигнал 1 или 0

pin.read_digital()

# Отправляет аналоговый сигнал от 0 до 1023

pin.write_analog(value)

# Возвращает аналоговый сигнал от 0 до 1023

pin.read_analog()

# устанавливает период ШИМ-вывода/вывода в миллисекундах
# (подробнее https://en.wikipedia.org/wiki/Pulse-width_modulation)

pin.set_analog_period(int)

# устанавливает период ШИМ-вывода/вывода в микросекундах
# (подробнее https://en.wikipedia.org/wiki/Pulse-width_modulation)

pin.set_analog_period_microseconds(int)

# Доступно только для сенсорных контактов 0, 1 и 2. Возвращает логическое значение, если контакт затронуть

pin.is_touched()

# Доступно только для сенсорных контактов 0, 1, 2, а также для логотипа micro:bit V2.
# Устанавливает сенсорный режим. Значение может быть либо RESISTIVE, либо CAPACITIVE.

pin.set_touch_mode(value)

За исключением контактов, отмеченных V2, которые предлагают следующий API:

pin_logo

# возвращает логическое значение если тронуть логотип

pin_logo.is_touched()

# Устанавливает сенсорный режим. Значение может быть либо RESISTIVE, либо CAPACITIVE

pin.set_touch_mode(value)

pin_speaker:

Принадлежит классу MicroBitPin, но не имеет функции pin.is_touched().

Изображение

Примечание

Вам не всегда нужно создавать изображение самостоятельно — Вы можете получить доступ к изображениям, непосредственно с помощью display.image. display.image это экземпляр Image, поэтому Вы можете использовать одинаковые методы.

Изображение API:

# создает пустое изображение 5x5

image = Image()

# создать изображение из строки - каждый символ в строке представляет собой
# уровень яркости светодиода - 0 выключен, 9 - максимальная яркость. Двоеточие ":"
# указывает на конец строки.

image = Image('90009:09090:00900:09090:90009:')

# создать пустое изображение заданного размера

image = Image(width, height)

# Возвращает ширину изображения

image.width()

# Возвращает высоту изображения

image.height()

# Управляет яркостью светодиода в указанной позиции ( от 0 до 5).
# value от 0 до 9

image.set_pixel(x, y, value)

# Возвращает яркость пикселя в указанной позиции (от 0 до 9)

image.get_pixel(x, y)

# возвращает новое изображение, созданное сдвигом изображения влево на 'n' раз.

image.shift_left(n)

# возвращает новое изображение, созданное сдвигом изображения вправо на 'n' раз.

image.shift_right(n)

# возвращает новое изображение, созданное сдвигом изображения вверх на 'n' раз.

image.shift_up(n)

# возвращает новое изображение, созданное сдвигом изображения вниз на 'n' раз.

image.shift_down(n)

# получить компактное строковое представление изображения

repr(image)

# получить строковое представление изображения

str(image)

#operators
# возвращает новое изображение, созданное путем наложения двух изображений

image + image

# возвращает новое изображение, созданное путем умножения яркости каждого пикселя на n

image * n

Изображения из библиотеки

Image.HEART Image.HEART_SMALL Image.HAPPY Image.SMILE Image.SAD Image.CONFUSED Image.ANGRY Image.ASLEEP Image.SURPRISED Image.SILLY Image.FABULOUS Image.MEH Image.YES Image.NO Image.TRIANGLE Image.TRIANGLE_LEFT Image.CHESSBOARD Image.DIAMOND Image.DIAMOND_SMALL Image.SQUARE Image.SQUARE_SMALL Image.RABBIT Image.COW Image.MUSIC_CROTCHET Image.MUSIC_QUAVER Image.MUSIC_QUAVERS Image.PITCHFORK Image.XMAS Image.PACMAN Image.TARGET Image.TSHIRT Image.ROLLERSKATE Image.DUCK Image.HOUSE Image.TORTOISE Image.BUTTERFLY Image.STICKFIGURE Image.GHOST Image.SWORD Image.GIRAFFE Image.SKULL Image.UMBRELLA Image.SNAKE

Время:

Image.CLOCK1 Image.CLOCK2 Image.CLOCK3 Image.CLOCK4 Image.CLOCK5 Image.CLOCK6 Image.CLOCK7 Image.CLOCK8 Image.CLOCK9 Image.CLOCK10 Image.CLOCK11 Image.CLOCK12

Стороны света:

Image.ARROW_N Image.ARROW_NE Image.ARROW_E Image.ARROW_SE Image.ARROW_S Image.ARROW_SW Image.ARROW_W Image.ARROW_NW

Ниже приведены название списков изображений Python. Вы можете их обрабатывать как списки.

Image.ALL_CLOCKS Image.ALL_ARROWS

Акселерометр

Доступ к акселерометру осуществляется через объект accelerometer:

# Ось X.
accelerometer.get_x()
# Ось Y.
accelerometer.get_y()
# Ось Z.
accelerometer.get_z()
# Получить показания трех осей X, Y, Z (в указанном порядке).
accelerometer.get_values()
# вернуть название текущего жеста.
accelerometer.current_gesture()
# вернуть True или False, чтобы указать произошел жест или нет.
accelerometer.is_gesture(name)
# вернуть True или False, чтобы указать произошел ли жест с последнего опроса
accelerometer.was_gesture(name)
# вернуть кортеж истории жестов.
accelerometer.get_gestures()

Объявленные жесты: up, down, left, right, face up, face down, freefall, 3g, 6g, 8g, shake.

Компас

Доступ к компасу осуществляется через объект compass:

# каллибровка компаса (это нужно для получения точных показаний).
compass.calibrate()
# вернуть числовое значение смещения градусов от «севера».
compass.heading()
# вернуть числовое значение силы магнитного поля micro:bit.
compass.get_field_strength()
# возвращает True или False, чтобы указать, откалиброван ли компас.
compass.is_calibrated()
# сбрасывает компас в состояние предварительной калибровки.
compass.clear_calibration()

Протокол I2C

На micro:bit есть шина I2C, доступная через объект i2c. Он имеет следующие методы:

# прочитать n байт с устройства с адресом; Repeat=True означает, что стоп-бит не будет отправлен.
i2c.read(addr, n, repeat=False)
# записать buf на устройство с адресом; Repeat=True означает, что стоп-бит не будет отправлен.
i2c.write(addr, buf, repeat=False)

Звук V2

Набор выразительных звуков доступен для micro:bit V2. Они могут быть доступ через модуль microbit.

Встроенные звуки

Sound.GIGGLE Sound.HAPPY Sound.HELLO Sound.MYSTERIOUS Sound.SAD Sound.SLIDE Sound.SOARING Sound.SPRING Sound.TWINKLE Sound.YAWN

Генератор речи V2

Динамик включен по умолчанию, и к нему можно получить доступ с помощью объекта speaker. Это можно отключить или включить:

# отключить встроенный динамик

speaker.off()

# включить встроенный динамик

speaker.on()

# возвращает True или False, чтобы указать, включен или выключен динамик

speaker.is_on()

Протокол UART

Используйте uart для связи с последовательным устройством, подключенным к контактам ввода-вывода устройства:

# Настроки связи  (используйте контакты 0 [TX] и 1 [RX]) со скоростью 9600.

uart.init()

# Возвращает True или False, проверяя есть ли входящие символы на чтение.

uart.any()

# Прочитать n входящих символов.

uart.read(n)

# Прочитать как можно больше входящих данных.

uart.read()

# Вернуть все символы до символа новой строки.

uart.readline()

# Читать байты в указанный буфер.

uart.readinto(buffer)

# Записать байты из буфера на подключенное устройство.

uart.write(buffer)