Skip to content

Atividade

Nível

Intermédio | MakeCode, Python | Acelerómetro, Ecrã LED, Som | Lógica Booleana, Operadores relacionais, Seleção, Sensores

Passo 1: Faz tu mesmo

O que é isto?

Faz uma ferramenta para nivelar corretamente prateleiras, quadros ou bancadas de trabalho. O altifalante integrado do novo micro:bit faz com que melhores o medidor de nível graças ao aviso sonoro.

Introdução

Guia do código

O que é que vais aprender

  • Como usar o sensor acelerómetro para medir ângulos
  • O que é "pitch" (inclinação) e "roll" (rotação)
  • Como combinar as leituras do sensor relativas a dois eixos de maneira a saber o ângulo de uma superfície

Como é que funciona

diagrama a mostrar a os dois eixos de inclinação e rotação do micro:bit
  • O acelerómetro do micro:bit pode medir os ângulos da inclinação em dois eixos: para cima e para baixo (inclinação) e de um lado para o outro (rotação). Este projeto usa isto para calcular o ângulo em que se encontra o micro:bit, sendo este valor mostrado no ecrã de LEDs ao mesmo tempo toca um som. Isto pode ser útil para pendurar um quadro na parede ou para fazer uma bancada de trabalho.
  • Um loop faz com que o programa esteja a medir constantemente o ângulo em que se encontra o micro:bit.
  • Se o acelerómetro mede um ângulo de inclinação entre +5 e -5 graus do eixo de inclinaçãoe rotação, o micro:bit está razoavelmente nivelado. Em seguida, mostra um pisco no ecrã de LEDs e toca um tom musical.
  • Se não tiveres o novo micro:bit com coluna sonora incorporada, para ouvires o som terás de ligar uns auriculares ou altifalante aos pins 0 e GND.
  • Se quer a inclinação ou a rotação estiverem fora do intervalo entre +5 e -5, aparece no ecrã de LEDs uma cruz e deixa de se ouvir o som.

Do que é que precisas

  • Um micro:bit
  • Editor MakeCode ou Python
  • Suporte de pilhas (opcional)

Passo 2: Cria o teu código

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

Passo 3: Melhora-o

  • Consegues fazer com que a frequência do som mude em função do ângulo?
  • Consegues programar uma "bolha" de LED que se move no ecrã como a bolha de um nível a sério?