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 as instruções while e if then 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 as instruções  if then e if else ou outras usadas nesta atividade, visite as informações de ajuda no VEXcode V5. Para obter mais informações sobre esta ferramenta de ajuda integrada, confira estes artigos sobre ajuda em C++ .

Í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 a instrução if then else.

  • Comandos VEXcode V5 C++ que serão usados nesta exploração: 
    • Drivetrain.drive(para frente);
    • Brain.Screen.pressing()
    • Drivetrain.stop();
    • if (condition){}
    • waitUntil();
    • while (condition){}  
    • aguarde(1, segundos);

Você pode usar as informações de Ajuda dentro do VEXcode V5 para aprender sobre as instruções do C++.

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 o ícone Tutorial destacado numa caixa vermelha. À esquerda, a Barra de Ferramentas mostra o ícone V5, um ícone de globo, Arquivo e, em seguida, Tutoriais. À direita 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 da biblioteca VEX explicando as instruções If Then Else. O artigo pode ser encontrado aqui.

Captura de tela da Biblioteca VEX, mostrando um artigo intitulado Usando instruções if-else no VEXcode V5.Para obter uma lista de operadores a serem usados nas instruções If Then Else, leia o artigo da biblioteca VEX explicando os booleanos. Este artigo pode ser encontrado aqui.Captura de tela da Biblioteca VEX, mostrando um artigo intitulado Using Booleans in VEXcode V5.

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

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

    Exemplo de seleção de projeto no VEXcode V5 com uma caixa vermelha ao redor do filtro de Modelos na parte superior e o motor Clawbot 2 sem projeto de giroscópio, indicando qual modelo abrir.

     

  • Construa o projeto abaixo.
// Begin project code
int main() {
  // Inicialização da configuração do robô. NÃO REMOVA!
  vexcodeInit();

  while (true) {
    Drivetrain.drive(forward);
    if (Brain.Screen.pressing()) {
      Drivetrain.stop();
      waitUntil(!Brain.Screen.pressing());
    }    
  }  
}  

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.

A caixa de diálogo Nome do projeto na barra de ferramentas VEXcode V5 lê Criando um botão de parada e mostra que o slot 1 está selecionado.

  • Salve e baixe o projeto como CreatingAStopButton para o Slot 1 no Clawbot e execute-o.
  • Para obter ajuda para baixar um projeto, consulte o tutorial no VEXcode V5 que explica como baixar e executar um projeto (C++).
  • 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 forever para dirigir e verificar continuamente. Se o ecrã estiver a ser pressionado (VERDADEIRO), o Clawbot para de conduzir.O projeto Creating a Stop Button é mostrado com comandos rotulados com a sua finalidade. O comando if é circulado em vermelho e rotulado como Checks if condition is True (Verifica se a condição é verdadeira) - a tela é pressionada. O comando de parada do ponto do trem de força é rotulado como Executa o bloco se for verdadeiro. O comando de espera até que seja rotulado controla a velocidade de processamento.

Não se espera que os alunos entendam por que a instrução waitUntil () é usada. Explique que a instrução waitUntil () é necessária 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, a instrução waitUntil () interrompe o fluxo do programa e não faz com que o projeto inicie o loop forever novamente até que o usuário pare de pressionar a tela.

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.

Passo 3: Compreender a instrução wait until().

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 é a  instruçãoDrivetrain.stop ().

Assim, o projeto precisa de uma  instrução waitUntil () que diz 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.

waitUntil(!Brain.Screen.pressing());

instruçãowaitUntil () é necessária devido à velocidade do fluxo do projeto. Se não estivesse 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 then para uma instrução if then else.

A caixa de diálogo Nome do projeto na barra de ferramentas VEXcode V5 lê Parar ou Dirigir e mostra que o slot 1 está selecionado.

  • Comece salvando CreatingAStopButton  como o novo projeto, StopOrDrive.
  • Se precisar de ajuda para salvar um projeto, clique aqui para C++.
  • Em seguida, crie o projeto StopOrDrive mostrado abaixo.
// Begin project code
int main() {
  // Inicialização da configuração do robô. NÃO REMOVA!
  vexcodeInit();

  while (true) {
    Drivetrain.drive(forward);
    if (Brain.Screen.pressing()) {
      Drivetrain.stop();
      waitUntil(!Brain.Screen.pressing());
    } 
    else {
      Drivetrain.drive(forward);
    }   
  }  
}  
  • Baixe StopOrDrive para o Slot 2 no seu Clawbot.

A seleção de ranhura na barra de ferramentas VEXcode V5 está aberta e a ranhura 2 está selecionada e destacada com uma caixa vermelha. O nome do projeto lê Parar ou Dirigir.

  • Para obter ajuda para baixar um projeto, consulte o tutorial no VEXcode V5 que explica como baixar e executar um projeto (C++).
  • 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, clique aqui.

Os dois projetos fazem com que o Clawbot se comporte da mesma maneira. A única diferença é o uso da instrução if then else no  projeto StopOrDrive.

Usar  instrução if then elsea 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 das instruções 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
event draw = event();

void drawButton() {
  Brain.Screen.setFillColor(red);
  Brain.Screen.drawRectangle(0, 0, 480, 240);
  wait(1, seconds);
}

int main() {
  // Initializing Robot Configuration. NÃO REMOVA!
  vexcodeInit();

  draw(drawButton);

  while (true) {
    draw.broadcast();
    Drivetrain.drive(forward);
    if (Brain.Screen.pressing()) {
      waitUntil(!Brain.Screen.pressing());
    } 
    else {
      Drivetrain.drive(forward);
    }   
  }  
}  

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).