Skip to content

Atividade

Nível de bolha

Intermediário | MakeCode, Python | Acelerômetro, Som, Visor LED | Lógica booleana, Operadores relacionais, Seleção, Sensores

Primeiro passo: o projeto

O que é?

Crie uma ferramenta para garantir que fotos, prateleiras ou bancadas de trabalho estejam niveladas. Com novo alto-falante integrado do micro:bit fica mais fácil melhorar o seu nível de bolha graças ao feedback auditivo.

Introdução

Código

O que você aprenderá:

  • Como usar o acelerômetro do sensor para medir ângulos;
  • O que é "pitch" (inclinação) e "roll" (rotação);
  • Como combinar as leituras do sensor de duas dimensões para determinar o nivelamento de uma superfície.

Como funciona:

Diagrama mostrando a inclinação e a rotação no micro:bit
  • O acelerômetro do micro:bit pode medir os ângulos de inclinação em duas direções: para cima e para baixo (pitch) e de um lado ao outro (roll). O projeto não só utiliza o acelerômetro, mas também recorre ao visor LED e ao alto-falante para indicar quando o micro:bit está nivelado, o qual pode ser útil para pendurar um quadro ou construir uma bancada de trabalho;
  • Um laço (estrutura de repetição) mantém o programa medindo o ângulo do micro:bit constantemente;
  • Se o acelerômetro medir um ângulo de declive entre +5 e -5 graus tanto de inclinação quanto de rotação, o micro:bit deve estar razoavelmente nivelado. Em seguida, uma indicação (marca indicadora) é exibida no visor LED e um alerta sonoro é emitido;
  • Para ouvir a melodia, conecte fones de ouvido ou um alto-falante ao pino 0 e ao pino GND. Caso você possua o novo micro:bit, o som será emitido pelo alto-falante integrado;
  • Se tanto a inclinação quanto a rotação estiverem fora do intervalo entre +5 e -5 graus, um ícone de X será mostrado no visor LED e o áudio é interrompido.

Itens necessários:

  • Um micro:bit;
  • Editor MakeCode ou Python;
  • Conjunto de baterias (opcional).

Segundo passo: é hora de programar

1from microbit import *
2import music
3
4# Uses accelerometer readings in the x and y axis 
5# and also allows the micro:bit to be slightly off-level
6# to make it work better in practice
7while True:
8    if accelerometer.get_x() > -10 and accelerometer.get_x() < 10 and accelerometer.get_y() > -10 and accelerometer.get_y() < 10:
9        display.show(Image.YES)
10        music.play('C5:1')
11        sleep(200)
12    else:
13        display.show(Image.NO)
14

Terceiro passo: vamos deixar o código ainda melhor

  • Você consegue fazer com que a melodia da inclinação seja alterada dependendo do ângulo?
  • Você poderia programar para que uma "bolha", que se pareça com um nível de bolha real e se mova pela tela, seja exibida no visor LED?