Índice:

Crie um nível de espírito elétrico: 15 etapas
Crie um nível de espírito elétrico: 15 etapas

Vídeo: Crie um nível de espírito elétrico: 15 etapas

Vídeo: Crie um nível de espírito elétrico: 15 etapas
Vídeo: As ALMAS Passam por 7 Julgamentos no INFERNO Para Voltarem à VIDA 2024, Novembro
Anonim
Crie um nível de bolha de ar elétrico
Crie um nível de bolha de ar elétrico

Use este nível de bolha para exibir rápida e facilmente a inclinação de qualquer objeto anexado!

Criado por Kaitlyn da Raffles Institution.

Etapa 1: Metas

Aprenda a ler a inclinação com o acelerômetro integrado do micro: bit.

Aprenda a trabalhar com micro: display LED 5x5 da bit!

Etapa 2: Materiais

1 x BBC micro: bit

1 x cabo micro USB

2 pilhas AA

1 x pacote de bateria AA dupla

Etapa 3: Pré-codificação: Conecte seu Micro: Bit

  1. Conecte o BBC micro: bit ao seu computador usando um cabo micro USB.
  2. Acesse o editor de javascript para o micro: bit em makecode.microbit.org.

Etapa 4: Etapa 0: Fluxo de código

Antes de começar a escrever o código, precisamos decidir o que queremos alcançar com o programa e em que ordem cada componente deve ser executado.

Para o nível de bolha de ar elétrico, as etapas que realizaremos no código para cada loop são:

  • Leia as leituras de inclinação do acelerômetro.
  • Converta leituras de inclinação em níveis de inclinação a serem exibidos na matriz de LED.
  • Verifique se há mudanças nas leituras do nível de inclinação do loop anterior.
  • Crie uma matriz de coordenadas de LED para diferentes casos de inclinação e direções.
  • Plote as coordenadas do LED na matriz de LED micro: bit.

Algumas funções adicionais que precisamos incluir são:

  • Calibração para posição de inclinação inicial.
  • Retornando à calibração de inclinação padrão.

Etapa 5: Etapa 1: Definindo Variáveis

Começamos definindo as variáveis necessárias conforme mostrado. A análise de algumas variáveis são:

  • tiltList: Array que armazena a extensão da inclinação dos valores 0-4 na ordem [Left, Right, Forward, Backward]
  • tiltBoundary: Limite do primeiro nível de inclinação entre 0 (sem inclinação) e 1 (leve inclinação)
  • prevState: Array que armazena os valores de inclinação do micro: bit de um loop anterior no mesmo formato que tiltList, usado para verificar uma mudança na inclinação entre as iterações
  • ledPlotList: Plote as matrizes de coordenadas do led na forma (x, y). Para definir um array, usamos o tipo number para indicar um array aninhado de variáveis do tipo: number.

Etapa 6: Etapa 2: converter valores de inclinação em níveis

Como a matriz de LED 5x5 pode exibir apenas um determinado número de informações, os valores de inclinação reais não serão úteis para exibição.

Em vez disso, uma função tiltExtent () pega o parâmetro num, que se refere ao valor de inclinação do acelerômetro, e converte esses valores de inclinação (num) em níveis de inclinação de 0 a 4.

0 indica nenhuma inclinação na direção fornecida e 4 indica uma inclinação muito grande, enquanto -1 é retornado quando há um erro.

Aqui, tiltBoundary e tiltSensitivity são usados como os valores de limite entre os níveis de inclinação.

Etapa 7: Etapa 3: Compilar os níveis de inclinação

As duas funções checkRoll () e checkPitch () gravam os níveis de inclinação obtidos de tiltExtent () em tiltList para os eixos de rotação (esquerda-direita) e inclinação (frente-trás), respectivamente.

Antes de usar os valores de inclinação, nós os calibramos usando um valor zerado para pitch (zeroPitch) e roll (zeroRoll) obtido de uma função de calibração escrita posteriormente.

Como as leituras do acelerômetro são negativas para a inclinação para a esquerda e para a frente, precisamos usar a função Math.abs () para obter o módulo do valor negativo a ser dado à função tiltExtent () como um parâmetro para essas duas direções.

Etapa 8: Etapa 4: Gravar Funções LEDPlotList

Tendo obtido os níveis de inclinação em tiltList, podemos agora escrever as funções de plotagem de led para os diferentes casos que podem surgir, nomeadamente

  • plotSingle (): Incline apenas em uma única direção, tomando a extensão da inclinação em uma determinada direção como parâmetro.
  • plotDiagonal (): Inclinação em duas direções da mesma magnitude, tomando a extensão da inclinação em qualquer direção como parâmetro.
  • plotUnequal (): Inclinação em duas direções de magnitudes diferentes, tomando a extensão da inclinação em cada direção como parâmetro. Usa plotDiagonal () primeiro e adiciona ao array ledPlotList depois.

Essas funções de plotagem gravam uma matriz de coordenadas de led em ledPlotList para ser plotada posteriormente.

Etapa 9: Etapa 5: Plotar a matriz de LED para cada caso

Usando as funções de plotagem dos três casos na etapa 4, podemos agora plotar a matriz de LED real para as diferentes combinações possíveis de níveis de inclinação. Como as três funções na etapa 4 não discriminam com a direção, precisamos ajustar os valores das coordenadas passados para a matriz de LED para plotar os LEDs nas direções corretas.

PlotResult () contém várias condições if que verificam o tipo de inclinação e representam a matriz de LED de acordo com led.plot (x, y). As combinações possíveis de inclinação são:

Direção única: Somente esquerda ou Somente direita

Direção única: Apenas para frente ou Apenas para trás

Duas direções: Forward-left ou Backward-left

Duas direções: Forward-right ou Backward-right

Nota: Para inclinação em duas direções, cada combinação pode ter a mesma magnitude ou magnitude diferente (verificada comparando maxX e maxY) e, portanto, plotada usando plotDiagonal () ou plotUnequal (), respectivamente.

Etapa 10: Etapa 6: escrever funções de calibração

Tendo concluído a maior parte do código, agora adicionamos as funções calibTilt () e resetTilt ().

calibTilt () permite que os usuários tare a inclinação para zero na posição atual do micro: bit

resetTilt () redefine a calibração da placa para seu estado original.

Etapa 11: Etapa 7: função de estado de gravação

Adicionamos uma função simples checkState () para verificar se os níveis de inclinação mudaram de uma iteração anterior.

Se não houver mudança nos níveis de inclinação de uma iteração anterior, ou seja, stateChange == 0, podemos passar diretamente para a próxima iteração e pular a plotagem da matriz de LED, reduzindo o cálculo necessário.

Etapa 12: Etapa 8: Juntando Tudo Parte 1

Agora podemos finalmente colocar todas as funções necessárias no loop infinito de micro: bit para executá-lo repetidamente.

Em primeiro lugar, definimos os botões A e B no micro: bit para as funções calibTilt () e resetTilt (), respectivamente, usando input.onButtonPressed () e traçamos uma marca na matriz de LED quando a calibração for concluída.

Etapa 13: Etapa 9: Juntando Tudo Parte 2

Em seguida, execute as funções necessárias de acordo com nosso fluxo de código na Etapa 0 e verifique se há uma mudança de estado (significando que há uma mudança na inclinação de micro: bit desde a última iteração).

Se houver uma mudança nos níveis de inclinação, ou seja, stateChange == 1, o código irá atualizar prevState para os novos níveis de inclinação e definir stateChange de volta para 0 para a próxima iteração, e plotar os níveis de inclinação atualizados na matriz de LED usando PlotResult ().

Etapa 14: Etapa 10: Montagem

Flash o código completo para o seu micro: bit.

Anexe a sua micro: bit e a bateria com segurança a qualquer objeto e ela estará pronta para uso!

Incrível

Divirta-se com o seu nível de bolha elétrica! E já que está nisso, por que não tentar estender as capacidades do sensor de inclinação ou até mesmo transformá-lo em um jogo?

Este artigo é da TINKERCADEMY.

Etapa 15: Fonte

Este artigo é de:

Se você tiver alguma dúvida, pode entrar em contato com : [email protected].

Recomendado: