Skip to main content

Ícone da Caixa de Ferramentas do Professor Caixa de Ferramentas do Professor - O Propósito desta Atividade

Esta atividade apresentará aos alunos o uso de instruções while e if para que o robô avance, a menos que a tela seja pressionada.

  • Esta atividade apresentará aos alunos as condicionais e as instruções que fazem o robô avançar, a menos que a tela seja pressionada.
  • Para obter mais informações sobre declarações if e if-else ou outras usadas nesta atividade, visite as informações de ajuda no VEXcode V5. Para obter mais informações sobre essa ferramenta de ajuda integrada, confira o artigo sobre ajuda em Python.

Ícone da Caixa de Ferramentas do Professor Caixa de Ferramentas do Professor

Para sugestões sobre estratégias de ensino para esta seção, consulte a coluna Entrega do Guia Para Fazer ou Não Fazer! (Google Doc / .docx / .pdf)

O Clawbot está pronto para tomar decisões!

Esta exploração lhe dará as ferramentas para poder começar a criar alguns projetos interessantes que usam instrução if-else.s

  • Comandos VEXcode V5 Python que serão usados nesta exploração: 
    • drivetrain.drive_for(PARA FRENTE)
    • brain.screen.pressing()
    • drivetrain.stop()
    • se condição:
    • else:
    • while True:  
    • aguarde(5, SEGUNDOS)

Você pode usar as informações de Ajuda dentro do VEXcode V5 para aprender sobre os comandos do Python.

VEXcode V5 com uma unidade para comando digitada no espaço de trabalho à esquerda e as informações de Ajuda abertas à direita. A Ajuda mostra uma definição do comando e informações sobre como ele é usado.

Certifique-se de ter o hardware necessário, seu notebook de engenharia e o VEXcode V5 prontos.

Materiais Necessários:
Quantidade Materiais necessários
1

VEX V5 Classroom Starter Kit (com firmware atualizado)

1

VEXcode V5 (versão mais recente, Windows, macOS)

1

Caderno de Engenharia

1

Modelo de Clawbot (Drivetrain 2-motor, sem giroscópio)

Ícone Dicas para Professores Dicas para Professores

Se esta for a primeira vez que o aluno usa o VEXcode V5, ele pode consultar os Tutoriais a qualquer momento durante esta exploração. Os Tutoriais estão localizados na barra de ferramentas.

Barra de ferramentas VEXcode V5 com tutoriais destacados numa caixa vermelha. A Barra de Ferramentas mostra, da esquerda para a direita, o logotipo V5, um ícone de globo, Arquivo e Tutoriais. À direita de Tutoriais estão ícones e funcionalidades adicionais.

Passo 1: Vamos começar com uma compreensão das declarações condicionais 

Antes de começar a programar com condicionais, leia o artigo que explica as instruções if-else. O artigo pode ser encontrado aqui (Google Doc / .docx / .pdf).
Screenshot of the linked article titled Using If else statements in VEXcode V5 Python.
Para obter uma lista de operadores a serem usados nas instruções if-else, leia o artigo que explica os booleanos. Este artigo pode ser encontrado aqui (Google Doc/.docx/.pdf).

Captura de tela do artigo vinculado intitulado Using Booleans in VEXcode V5 Python.

Passo 2: Vamos começar a programar com instruções condicionais.

  • Abra o projeto de exemplo de modelo Clawbot (Drivetrain 2-motor, No Gyro).

    Projetos de exemplo no VEXcode V5 com o filtro Modelos e o motor Clawbot Drivetrain 2 sem ícone de giroscópio destacado com uma caixa vermelha indicando qual projeto abrir.

     

  • Construa o projeto abaixo.
# Comece o código do projeto
enquanto
    True: drivetrain.drive (FORWARD)
    ifbrain.screen.pressing ()
        :drivetrain.stop ()
        whilebrain.screen.pressing ():
            wait(5, MSEC)
    wait(5, MSEC)

Faça o seguinte no seu caderno de engenharia:

  • Explique o que o Clawbot faz no projeto. Terá de explicar mais do que o facto de criar um botão de paragem. Explique quais instruções fazem o Clawbot fazer o quê.
  • Escreva um resumo de uma frase que capte o que o projeto faz.
  • Teste para ver se a sua previsão do que o Clawbot faz no projeto está correta.
  • Nomeie o projeto CreatingAStopButton. Baixe e execute o projeto no Clawbot.
    A caixa de diálogo Nome do projeto na barra de ferramentas do VEXcode V5 lê Criando um botão de parada e mostra que o slot 1 está selecionado.
  • Verifique as suas explicações sobre o projeto e adicione notas para corrigi-las conforme necessário.

Ícone da Caixa de Ferramentas do Professor Caixa de Ferramentas do Professor - Respostas

Este projeto faz com que o robô avance continuamente, mas pare se a tela for pressionada. Ele faz isso usando uma instrução "para sempre" (enquanto True) para conduzir e verificar continuamente. Se a tela estiver sendo pressionada (Verdadeiro), o Clawbot para de dirigir.A função dos comandos no projeto Stop ou Drive é rotulada. A instrução if é rotulada como Checks se a condição for True - verifica se a tela está pressionada. Os blocos recuados abaixo dele são rotulados Se a condição for Verdadeira, executa o bloco de códigos. O comando while Brain Screen Pressioning é rotulado como controla a velocidade de processamento.

Não se espera que os alunos entendam por que os comandos while brain.screen.pressing (): e wait(5, MSEC) são usados. Explique que esses comandos são necessários devido à velocidade do fluxo do programa do robô. Se não estivesse lá, os motores do Clawbot se comportariam como se o usuário estivesse pressionando a tela repetidamente enquanto percorria o projeto. Em vez disso, estas instruções interrompem o fluxo do programa e não permitem que o projeto inicie o ciclo novamente até que o utilizador pare de pressionar o ecrã.

A linha do pseudocódigo pode ser tão simples quanto: Dirija para a frente até que a tela seja pressionada.

Os cadernos de engenharia dos alunos podem ser mantidos e pontuados individualmente (Google Doc / .docx / .pdf) ou em equipe (Google Doc / .docx / .pdf). Os links anteriores fornecem uma rubrica diferente para cada abordagem. Sempre que uma rubrica for incluída no planejamento educacional, é uma boa prática explicar a rubrica ou pelo menos dar cópias aos alunos antes do início da atividade.

Etapa 3: Entenda as declarações while wait().

Observe que se a tela do Cérebro for pressionada, o fluxo do projeto se move rapidamente e o projeto passará para a próxima instrução, que é o  comandodrivetrain.stop ().

Assim, o projeto precisa dos comandos while e wait que dizem ao robô para permanecer parado até que a tela do Cérebro seja liberada. Caso contrário, a instrução forever faria com que o projeto começasse novamente.

while brain.screen.pressing():
	espera(5, MSEG)

Os comandos while e wait são necessários devido à velocidade do fluxo do projeto. Se eles não estivessem lá, o projeto passaria para a próxima instrução antes que o robô tivesse tempo de responder.

Passo 4: Alterar o projeto.

Nosso próximo passo é alterar a instrução if para uma instrução if-else.

  • Comece salvando CreatingAStopButton  como o novo projeto, StopOrDrive.A caixa de diálogo Nome do projeto na barra de ferramentas VEXcode V5 lê Stop ou Drive e mostra que o slot 1 está selecionado.
  • Se precisar de ajuda para salvar um projeto, veja estes artigos.
  • Em seguida, crie o projeto StopOrDrive mostrado abaixo.
# Comece o código do projeto
enquanto True:
    if brain.screen.pressing ()
        :drivetrain.stop ()
        whilebrain.screen.pressing ():
            wait(5, MSEC)
    else:
        drivetrain.drive(FORWARD)
    wait(5, MSEC)
  • Baixe StopOrDrive para o Slot 2 no seu Clawbot.

A janela de seleção de slot é aberta na barra de ferramentas VEXcode V5 e o slot 2 é selecionado e destacado com uma caixa vermelha.

  • Para obter ajuda para baixar e executar um projeto, consulte este artigo.
  • Teste CreatingAStopButton (Slot 1) e, em seguida, teste StopOrDrive (Slot 2) e compare-os para ver se há alguma diferença no comportamento do robô. Anote quaisquer diferenças no seu bloco de anotações de engenharia

Ícone da Caixa de Ferramentas do Professor Caixa de Ferramentas do Professor - Resposta

Em relação ao comportamento do robô, não deve haver diferença entre os projetos CreatingAStopButton  e StopOrDrive.

Se os alunos precisarem de mais ajuda para entender as declarações if-else, consulte este artigo (Google Doc / .docx / .pdf).

Os dois projetos fazem com que o Clawbot se comporte da mesma maneira. A única diferença é o uso da instrução if-else no projeto StopOrDrive.
Usar a instrução if-else permitirá que você adicione botões adicionais à tela nas próximas atividades.

Ícone Estenda a sua aprendizagem Estenda a sua aprendizagem

À medida que este Laboratório STEM avança, os alunos desenvolverão projetos que permitam que o ecrã do Clawbot funcione como uma interface de utilizador. Em preparação para isso, desafie os alunos a descobrir como desenhar um retângulo colorido na tela que funcione como um botão. Como pressionar em qualquer lugar da tela é atualmente a condição, o botão deve ocupar toda a tela. Os alunos devem fazer com que o projeto transmita um evento para desenhar o botão quando iniciado.

Oriente os alunos a aprender primeiro como a tela do cérebro é organizada em um sistema de coordenadas. Eles precisarão entender isso para definir parâmetros dentro dos comandos que usarão. As coordenadas usadas correspondem ao número de pixels e não ao número da coluna ou linha. Aqui está o layout da tela:A grade de pixels da tela Cérebro V5 mostra 12 linhas numeradas ao longo do lado esquerdo, com a linha superior rotulada como Linha 1 e a inferior rotulada como Linha 12. Na parte superior estão 48 colunas numeradas, com a Coluna 1 rotulada na extrema esquerda e a Coluna 48 rotulada na extrema direita. As medições totais de pixels têm 480 px de largura por 240 px de altura.

Os alunos devem planejar, testar e refinar essas alterações no projeto enquanto o documentam em seus cadernos de engenharia. Para a rubrica de bloco de anotações de engenharia individual, clique em um dos seguintes links (Google Doc / .docx / .pdf) ou clique em um dos seguintes links para blocos de anotações de equipe (Google Doc / .docx / .pdf).

Aqui está um exemplo de solução: 

# Begin project code
draw = Event()

def draw_button():
    brain.screen.set_fill_color (Color.RED)
    brain.screen.draw_rectangle (0, 0, 480, 240)
    wait(1, SECONDS)

draw(draw_button)
while True:
    draw.broadcast ()
    drivetrain.drive (FORWARD)

    if brain.screen.pressing ():
        drivetrain.stop ()
        while brain.screen.pressing ():
            wait(5, MSEC)
    else:
        drivetrain.drive (FORWARD)
        
    wait(5, MSEC)

Como você pode ver, o botão é desenhado para ocupar toda a tela, começando na origem (0, 0) e preenchendo todos os 480 pixels horizontais (eixo x) e 240 pixels verticais (eixo y).