top of page

SP-088

SPIKE Prime

Image-empty-state.png

30-45 min

Item 1

Iniciante

Novos movimentos com motores

Os alunos programam seus motores para se moverem para posições exatas e para graus exatos.

Aula criada por:

LEGO® Education

Suporte ao Professor

Objetivos da Aula

Os alunos irão:

Programe um motor para se mover para a posição usando o caminho mais curto.
Programe um motor para se mover para uma posição específica.
Programe um motor para mover um número definido de graus.

Preparar

Certifique-se de que os hubs SPIKE Prime estejam carregados, especialmente se estiverem conectados por Bluetooth.
Certifique-se de que os alunos construíram o modelo de Introdução 2: Motores e sensores até a etapa 19 utilizada na lição Fazendo movimentos com motores.

Material do Aluno

------------

Image-empty-state.png

Envolver

Usando um pneu do conjunto SPIKE Prime, peça aos alunos que pensem em diferentes maneiras de medir a distância que o pneu percorreria se desse uma volta. Os alunos devem apresentar vários métodos para determinar essa distância. Peça ao aluno que pense na roda como um círculo. Discuta com eles como calcular a circunferência para determinar a distância. Pergunte aos alunos como eles poderiam medir a circunferência da roda usando uma superfície plana se estiverem com dificuldade.

Peça aos alunos que imaginem que têm um robô com rodas. Eles precisam codificar os motores para mover uma certa distância. Pergunte aos alunos como eles poderiam programar o motor para se mover além do tempo? Como isso ajudaria a mover o robô com mais precisão? Discuta ideias com os alunos sobre como se mover apenas ½ volta (0,5 rotação), uma volta completa (1 rotação), 2 voltas (2 rotações).

Nota: A roda tem um diâmetro de 5,6 cm (2,2 pol.) e percorre uma distância de 17,6 cm (6,9 pol) por rotação ou um círculo completo de 360°.

 

 

Perguntas para investigar

Como os robôs se movem com precisão?

 

 

--

Image-empty-state.png

Explorar

Os alunos irão explorar como programar motores para mover usando graus.

Executar um único motor por graus A
operação de um motor por graus permite determinar até que ponto o motor girará em incrementos de grau – 1/360 de uma rotação. Faça um brainstorming com os alunos sobre como eles poderiam programar o motor para se mover.
Os alunos devem pensar sobre quais informações o software precisa para executar o hardware corretamente. Escreva um programa em pseudocódigo com os alunos para fazer o motor girar em um círculo completo.

Um exemplo poderia ser:

  • Importar motor
  • Inicializar motor
  • Ligue o motor
  • Mova o motor 360 graus

Obs: O código escrito passo a passo não precisa corresponder exatamente ao que estará no programa. O pseudocódigo é usado para ajudar os alunos a pensar em quais etapas são necessárias para que a programação possa ser codificada linearmente.

Oriente os alunos a abrir um novo projeto na tela de programação Python. Peça aos alunos para apagar qualquer código que já esteja na área de programação. Os alunos devem conectar seu hub e conectar um motor na porta C de seu hub.

Forneça aos alunos o código de exemplo para mover o motor. Peça aos alunos que executem o programa. Os alunos também podem copiar e colar este código da Base de conhecimento Getting Started Part 2: Controlling the Motors seção na tela de programação.

 

 

from spike import Motor

\# Initialize the motor
motor = Motor('C')

\# Rotate the motor 360 degrees clockwise
motor.run_for_degrees(360)

 

 

Discuta com os alunos como o motor se moveu. Ajude os alunos a identificar o marcador no motor que permite definir a posição para 0 graus. Isso permitirá que os alunos meçam a distância que o motor se move.

Peça aos alunos para colocarem a marca na posição 0. Execute o programa novamente. Pergunte aos alunos se o marcador voltou à mesma posição.

0 0

Peça aos alunos que coloquem números diferentes nos valores de grau para ver como o motor se move. Peça-lhes que tentem números grandes e pequenos.

Certifique-se de que os alunos tentem especificamente operar o motor usando um valor negativo. Pergunte a eles o que mudou. (A direção foi invertida.)

Peça aos alunos que digitem um número maior que 360. O que acontece?

 

 

# Run the motor 360 degrees clockwise, at 30% speed
motor.run_for_degrees(-360, 30)

 

 

Discuta o que os alunos descobrem após suas investigações.

Executar um único motor para posicionar
Os alunos explorarão como executar um único motor para uma posição.

0 0

Peça aos alunos que localizem o marcador de posição novamente e verifique se ele está alinhado. Quando alinhado, o motor está na posição de 0 grau. Discuta com os alunos como programar o motor para se mover para uma posição específica (o motor irá parar em uma posição exata). Peça aos alunos que alterem seu pseudocódigo para usar posição em vez de graus.

Forneça aos alunos o código de exemplo para mover o motor. Peça aos alunos para digitar este programa na tela de programação. Os alunos também podem copiar e colar este código da seção Getting Started Part 2: Controlling the Motors da Base de Conhecimento. Peça aos alunos que executem este programa.

 

 

from spike import Motor

# Initialize the motor
motor = Motor('C')

# Place the motor in position “0,” aligning the markers
motor.run_to_position(0, 'shortest path', 75)

 

 

Discuta o programa com os alunos para identificar o que acontece quando eles executam o código. Se os alunos começarem na posição 0 graus, o motor não se moverá.

Peça aos alunos para moverem o motor para que não fique mais na posição de 0 graus. Execute o programa. O motor deve se mover para a posição de 0 graus. Em que direção ele se moveu para chegar lá?

Peça aos alunos para executarem o programa várias vezes com o motor partindo em posições diferentes a cada vez. Discuta o que acontece. Os alunos devem identificar que o motor não está se movendo da mesma forma todas as vezes. O motor se move na direção que faz o caminho mais curto de volta à posição de 0 graus.

Revise as linhas de código juntas para destacar por que o motor está se movendo dessa maneira.

Qual é o movimento mais longo que um motor pode fazer para retornar à posição 0?

Peça aos alunos que alterem o código para fazer o motor parar em diferentes posições. Você pode fornecer esse código de amostra para eles e deixá-los explorar ideias de como eles podem alterar o código. Lembre aos alunos que, ao explorar, há uma grande probabilidade de receber uma mensagem de erro no console inferior e o programa não ser executado.

 

 

from spike import PrimeHub, Motor
from spike.control import wait_for_seconds

# Initialize the motor
motor = Motor('C')

# Run the motor to different positions, at different speeds
wait_for_seconds(1)
motor.run_to_position(0, 'shortest path', 30)
wait_for_seconds(1)
motor.run_to_position(90, 'clockwise', 100)

--

Image-empty-state.png

Explicar

Permita que os alunos compartilhem os novos programas de exemplo que eles criaram para graduações e cargos e discutam maneiras de programar o motor. Discuta como o motor pode ser ajustado para se mover em graus e quando isso pode ser útil em um programa.

  • Como é que este programa funciona?
  • Quando seria útil programar um motor para se mover em graus ou para posicionar?
  • Por que usar graus ou para posicionar permite mais precisão no movimento do que programar para segundos?
  • Como o motor se moveu quando você colocou um número maior que 360?
  • Como você pode calcular quantos graus você precisará programar?
  • Ao usar o caminho mais curto em seu programa para posição, por que o motor não se move se você começar na posição de 0 grau?
  • Como você pode programar o motor para se mover na direção oposta?

--

Image-empty-state.png

Elaborar

Trabalhe em conjunto para trabalhar na depuração. Forneça aos alunos cada um dos seguintes códigos. Discuta o que há de errado com cada código. Certifique-se de que os alunos executem cada código e revisem a mensagem de erro no console.

 

1) O que está faltando?

 

 

from spike import Motor

# Rotate the motor 360 degrees clockwise
motor.run_for_degrees(360)

 

 

Os alunos devem identificar que o motor não está inicializado e, portanto, não pode funcionar por graus. A mensagem de erro no console é

 

 

File "lib/hub/flash/programrunner/__init__.py", line 1, in start_program
File "./projects/31408.py", line 4
NameError: name 'motor' isn't defined

 

 

Os alunos precisam adicionar motor=Motor('C') após a linha de importação. Peça aos alunos que adicionem isso e executem o programa novamente para verificar seu programa.

 

2) Qual número está errado e por quê?

 

 

from spike import Motor

# Initialize the motor
motor = Motor('C')

# Run motor for 2 seconds at 50% speed
motor.run_for_seconds(2.0, 150)

 

 

Os alunos devem identificar que a potência do motor está definida para 150, que está fora da faixa de 100% permitida. O programa, no entanto, ainda será executado sem nenhuma mensagem de erro no console. A energia voltará a 100% e executará o programa.

 

3) O que há de errado?

 

 

from spike import PrimeHub, Motor
from spike.control import wait_for_seconds

# Initialize the motor
motor = Motor('C')

# Run the motor to different positions, at different speeds
wait_for_seconds(1)
motor.run_to_position(0, 'shorest path', 30)
wait_for_seconds(1)
motor.run_to_position(90, 'clockwise', 100)

 

 

Os alunos devem reconhecer que a palavra mais curta está incorreta na linha 9. A mensagem de erro indica que há um problema na linha 9 e que o erro é um valor não permitido

 

 

File "lib/hub/flash/programrunner/__init__.py", line 1, in start_program
File "./projects/23262.py", line 9
File "lib/hub/flash/spike/motor.py", line 1, in run_to_position
ValueError: direction is not one of the allowed values: ('shortest path', 'clockwise', 'counterclockwise').

 

 

--

Avaliar

Observação do Professor:
Discuta o programa com os alunos.

Faça perguntas aos alunos como:

  • Quais são as diferentes maneiras de programar seus motores para se moverem?
  • Quais métodos permitem movimentos mais precisos?
  • Quais são as maneiras pelas quais você pode programar para mover usando a posição?

Autoavaliação:
Peça aos alunos que respondam o seguinte em seus diários:

  • O que você aprendeu hoje que pode ser útil na programação de robôs para se mover com precisão?
  • Que características de um bom companheiro de equipe eu demonstrei hoje?
  • Peça aos alunos que se classifiquem em uma escala de 1 a 3 em relação ao gerenciamento do tempo hoje.
  • Peça ao aluno para avaliar a si mesmo em uma escala de 1 a 3, em seu gerenciamento de materiais (peças) hoje.

--

Dicas para o professor

Diferenciar

bottom of page