Contador de passos com a micro:bit em Python - MakerHero
Contador de passos com a micro:bit em Python

Contador de passos com a micro:bit em Python

Deixe um comentário

Nesta aula, vamos explorar como criar um contador de passos usando a micro:bit e a linguagem de programação Python. Aprenderemos a detectar movimentos e registrar passos, além de exibir a contagem na matriz de LEDs da micro:bit. Vamos abordar diferentes maneiras de implementar essa funcionalidade para fornecer uma visão mais abrangente do uso de sensores de movimento e programação com a micro:bit.

Contador de passos com a micro:bit: Básico

Neste primeiro projeto, vamos criar um contador de passos simples que incrementa a contagem cada vez que a placa microbit detecta um movimento de sacudida.

 

Abaixo está o passo a passo para criar a contador de passos simples com a micro:bit:

  • Importar Módulos Necessários: Comece importando o módulo necessário da biblioteca da micro:bit.
  • Inicializar Variável de Passos: Crie uma variável para armazenar a contagem de passos.
  • Detectar Movimentos e Incrementar a Contagem: Use um loop contínuo para detectar movimentos de sacudida e incrementar a contagem de passos.
  • Exibir a Contagem de Passos: Mostre a contagem de passos na matriz de LEDs da micro:bit.

Aqui está o código completo para o contador de passos simples:

from microbit import *

# Inicializa a contagem de passos
steps = 0

# Loop contínuo para verificar os movimentos
while True:
    # Verifica se a micro:bit foi sacudida
    if accelerometer.was_gesture('shake'):
        # Incrementa a contagem de passos
        steps += 1
        # Mostra a contagem de passos na matriz de LEDs
        display.show(steps)

Abaixo você pode entender melhor como o código funciona:

  • Importar Biblioteca: from microbit import * importa todas as funcionalidades necessárias da biblioteca da micro:bit.
  • Inicializar Variável de Passos: steps = 0 cria e inicializa a variável steps com 0.
  • Loop Contínuo: while True: cria um loop que continuará executando indefinidamente.
  • Detectar Movimento de Sacudida: if accelerometer.was_gesture(‘shake’): verifica se a micro:bit foi sacudida.
  • Incrementar Contagem: steps += 1 incrementa a variável steps em 1.
  • Exibir Contagem: display.show(steps) mostra a contagem atual de passos na matriz de LEDs da micro:bit.

Contador de passo com a micro:bit: Baixo consumo de energia

Neste projeto, vamos criar um contador de passos eficiente em termos de consumo de energia, que incrementa a contagem de passos apenas quando detecta um movimento de sacudida e exibe a contagem apenas quando o botão A é pressionado.

Contador de passo com a microbit: Baixo consumo de energia

Abaixo está o passo a passo para criar a contador de passos de baixo consumo de energia com a micro:bit:

  • Importar Módulos Necessários: Comece importando o módulo necessário da biblioteca da micro:bit.
  • Inicializar Variável de Passos: Crie uma variável para armazenar a contagem de passos.
  • Detectar Movimentos e Incrementar a Contagem: Use um loop contínuo para detectar movimentos de sacudida e incrementar a contagem de passos.
  • Exibir a Contagem de Passos Sob Demanda: Mostre a contagem de passos na matriz de LEDs apenas quando o botão A é pressionado.

Aqui está o código completo para o contador de passos com baixo consumo de energia:

from microbit import *

# Inicializa a contagem de passos
steps = 0

# Loop contínuo para verificar os movimentos
while True:
    # Verifica se a micro:bit foi sacudida
    if accelerometer.was_gesture('shake'):
        # Incrementa a contagem de passos
        steps += 1
    # Verifica se o botão A foi pressionado
    if button_a.is_pressed():
        # Mostra a contagem de passos na matriz de LEDs
        display.scroll(steps)

Abaixo você pode entender melhor como o código funciona:

  • Importar Biblioteca: from microbit import * importa todas as funcionalidades necessárias da biblioteca da micro:bit.
  • Inicializar Variável de Passos: steps = 0 cria e inicializa a variável steps com 0.
  • Loop Contínuo: while True: cria um loop que continuará executando indefinidamente.
  • Detectar Movimento de Sacudida: if accelerometer.was_gesture(‘shake’): verifica se a micro:bit foi sacudida.
  • Incrementar Contagem: steps += 1 incrementa a variável steps em 1.
  • Exibir Contagem Sob Demanda: if button_a.is_pressed(): verifica se o botão A foi pressionado, e display.scroll(steps) mostra a contagem atual de passos na matriz de LEDs da micro:bit.

Contador de passos com a micro:bit: Ajuste de sensibilidade

Neste projeto, vamos criar um contador de passos que utiliza a leitura do acelerômetro na direção Y para detectar passos. Ajustaremos a sensibilidade para garantir que apenas movimentos significativos (passos) sejam contados.

Contador de passos com a microbit: Ajuste de sensibilidade

Vamos criar um contador de passos que incrementa a contagem ao detectar uma leitura de acelerômetro superior a 1500 na direção Y:

  • Importar Módulos Necessários: Importar o módulo necessário da biblioteca da micro:bit.
  • Inicializar Variável de Passos: Criar uma variável para armazenar a contagem de passos.
  • Detectar Movimentos e Incrementar a Contagem: Usar um loop contínuo para detectar leituras de acelerômetro e incrementar a contagem de passos.
  • Exibir a Contagem de Passos Imediatamente: Mostrar a contagem de passos na matriz de LEDs imediatamente após a detecção.

Aqui está o código completo para o contador de passos com sensibilidade ajustada:

from microbit import *

# Inicializa a contagem de passos
steps = 0

# Loop contínuo para verificar os movimentos
while True:
    # Verifica se a leitura do acelerômetro na direção Y é maior que 1500
    if accelerometer.get_y() > 1500:
        # Incrementa a contagem de passos
        steps += 1
        # Mostra a contagem de passos na matriz de LEDs
        display.scroll(steps)

Abaixo você pode entender melhor como o código funciona:

  • Importar Biblioteca: from microbit import * importa todas as funcionalidades necessárias da biblioteca da micro:bit.
  • Inicializar Variável de Passos: steps = 0 cria e inicializa a variável steps com 0.
  • Loop Contínuo: while True: cria um loop que continuará executando indefinidamente.
  • Detectar Movimento com Sensibilidade Ajustada: if accelerometer.get_y() > 1500: verifica se a leitura do acelerômetro na direção Y é maior que 1500, indicando um movimento significativo.
  • Incrementar Contagem: steps += 1 incrementa a variável steps em 1.
  • Exibir Contagem Imediatamente: display.scroll(steps) mostra a contagem atual de passos na matriz de LEDs da micro:bit.

Contador de passos com a micro:bit: DataLogger

Neste projeto, vamos criar um contador de passos utilizando a micro:bit e adicionar um DataLogger para registrar os dados do acelerômetro em um log. Isso permitirá analisar os dados posteriormente para obter informações detalhadas sobre os movimentos detectados.

Vamos criar um contador de passos que registra os dados do acelerômetro e controla a gravação através de botões:

 

  • Inicialização e Configuração Inicial: Abra o editor MakeCode. Crie um novo projeto e selecione a aba de texto (Python).
  • Instalar extensão datalogger: Clique em extensões e busque por datalogger e faça a instalação.
  • Definir Variáveis Globais: Em Python do MakeCode, você pode usar a função def para definir funções e variáveis globais podem ser inicializadas diretamente.
logging = False
  • Função on_log_full: Esta função é chamada quando o log está cheio. Você pode usar a função datalogger.on_log_full para definir isso.
def on_log_full():
    global logging
    logging = False
    basic.show_leds("""
        # # # # #
        # # # # #
        # # # # #
        # # # # #
        # # # # #
    """)

datalogger.on_log_full(on_log_full)
  • Função on_button_pressed_a: Esta função é ativada quando o botão A é pressionado. Ela define logging como True e mostra o ícone de confirmação.
def on_button_pressed_a():
    global logging
    logging = True
    basic.show_icon(IconNames.YES)

input.on_button_pressed(Button.A, on_button_pressed_a)
  • Função on_button_pressed_ab: Esta função é ativada quando os botões A e B são pressionados juntos. Ela define logging como False, mostra o ícone de crânio e deleta o log.
def on_button_pressed_ab():
    global logging
    logging = False
    basic.show_icon(IconNames.SKULL)
    datalogger.delete_log()
    datalogger.set_column_titles("x", "y", "z")

input.on_button_pressed(Button.AB, on_button_pressed_ab)
  • Função on_button_pressed_b: Esta função é ativada quando o botão B é pressionado. Ela define logging como False e mostra o ícone de negação.
def on_button_pressed_b():
    global logging
    logging = False
    basic.show_icon(IconNames.NO)

input.on_button_pressed(Button.B, on_button_pressed_b)
  • Função on_every_interval: Esta função é executada a cada intervalo de tempo especificado (100 ms neste caso) enquanto logging é True. Ela registra os valores de aceleração nas dimensões x, y e z.
def on_every_interval():
    if logging:
        datalogger.log(
            datalogger.create_cv("x", input.acceleration(Dimension.X)),
            datalogger.create_cv("y", input.acceleration(Dimension.Y)),
            datalogger.create_cv("z", input.acceleration(Dimension.Z))
        )

loops.every_interval(100, on_every_interval)

Abaixo está o código completo para ser carregado na micro:bit:

def on_log_full():
    global logging
    logging = False
    basic.show_leds("""
        # # # # #
        # # # # #
        # # # # #
        # # # # #
        # # # # #
        """)
datalogger.on_log_full(on_log_full)

def on_button_pressed_a():
    global logging
    logging = True
    basic.show_icon(IconNames.YES)
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_button_pressed_ab():
    global logging
    logging = False
    basic.show_icon(IconNames.SKULL)
    datalogger.delete_log()
    datalogger.set_column_titles("x", "y", "z")
input.on_button_pressed(Button.AB, on_button_pressed_ab)

def on_button_pressed_b():
    global logging
    logging = False
    basic.show_icon(IconNames.NO)
input.on_button_pressed(Button.B, on_button_pressed_b)

logging = False
logging = False
basic.show_icon(IconNames.NO)
datalogger.set_column_titles("x", "y", "z")

def on_every_interval():
    if logging:
        datalogger.log(datalogger.create_cv("x", input.acceleration(Dimension.X)),
            datalogger.create_cv("y", input.acceleration(Dimension.Y)),
            datalogger.create_cv("z", input.acceleration(Dimension.Z)))
loops.every_interval(100, on_every_interval)

Após traduzir o código para o ambiente MakeCode Python, verifique se todas as funções estão corretamente associadas aos eventos de botão e aos intervalos de tempo. Teste o código no simulador para garantir que o comportamento seja o esperado antes de implementá-lo fisicamente.

O funcionamento do contador de passos com a micro:bit, usando um datalogger, está descrito abaixo:

 

  • Após desconectar o micro:bit do computador e conectar uma bateria, cole-o na perna ou sapato.
  • Pressione o botão A para iniciar o registro de dados. Um sinal de “tick” aparecerá na tela para indicar que o registro começou.
  • Caminhe e conte os passos, tentando registrar pelo menos dez para iniciar.
  • Se o log de dados ficar cheio (o que é improvável), todas as luzes do LED no micro:bit acenderão.
  • Pressione o botão B para parar o registro de dados. Um ícone de “X” aparecerá para indicar que o registro foi interrompido.

Para analisar os dados, siga os passos abaixo:

 

  • Desconecte a bateria do micro:bit e conecte-o ao computador.
  • A micro:bit aparecerá como um drive USB chamado MICROBIT.
  • Dentro dele, abra o arquivo MY_DATA para ver uma tabela dos seus dados.
  • Visualize os dados como um gráfico no navegador para identificar onde ocorreram os picos de aceleração, indicando os passos dados.
  • Use esses dados para ajustar a sensibilidade do contador de passos conforme necessário.

Faça seu comentário

Acesse sua conta e participe