Micro:bit - Акселерометр - (Micro python) заставляет микробит считать движения вниз - работает только с жестами

Следующий код работает просто отлично:

# Add your Python code here. E.g.
from microbit import *

score = 0
display.show(str(score))

   while True:
    if accelerometer.was_gesture('face down'):
        score += 1
        if score < 10:
            display.show(score)
        else: 
            display.scroll(score)
    continue

'''Но когда я пытаюсь заменить was_gesture('лицом вниз') на get_Z, я получаю сообщение об ошибке:'''

# Add your Python code here. E.g.

    from microbit import *

    score = 0
    display.show(str(score))

    z = accelerometer.get_z()

    while True:
        if z < accelerometer.get_z(-500) 
            score += 1
            if score < 10:
                display.show(score)
            else: 
                display.scroll(score)
        continue

Я получаю сообщение об ошибке? Но почему? Я просто хочу, чтобы микробит считался каждый раз, когда я перемещаю устройство ниже определенной точки?


person Mikkel    schedule 09.02.2020    source источник
comment
Какую именно ошибку вы получаете?   -  person Jon Nordby    schedule 10.02.2020


Ответы (2)


Вы пропустили двоеточие в конце этой строки:

       if z < accelerometer.get_z(-500) 

Кроме того, метод get_z() не принимает никаких аргументов: https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_z

person carlosperate    schedule 10.02.2020

Оператор accelerometer.get_z() должен находиться внутри цикла while, чтобы он обновлялся. Цикл также нуждается в операторе сна, чтобы не отображать невыполненные обнаружения.

Я протестировал приведенный ниже код на micro:bit с помощью редактора mu. Когда микробит находится стороной со светодиодом вверх, счетчик увеличивается. Когда он оказывается лицевой стороной вниз, счет останавливается.

from microbit import *
uart.init(baudrate=115200)

score = 0
display.show(str(score))

while True:
    z = accelerometer.get_z()
    if z < -500:
        score += 1
        if score < 10:
            display.show(score)
        else: 
            display.scroll(score)
    sleep(1000)
    continue
person Oppy    schedule 10.02.2020
comment
Он отлично работает, как вы только что объяснили выше, но моя проблема заключается в том, что я хотел бы, чтобы устройство считало только 1 в то время, когда устройство опускается ниже определенной точки, например. когда я перемещаю устройство к земле - в какой-то момент будет пройдена отметка -500 - и счет будет 1. Затем верните микробит в исходное положение и повторите маневр, и тогда счет должен быть 2? Любые идеи? - person Mikkel; 11.02.2020