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++ .
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++.
Certifique-se de ter o hardware necessário, seu notebook de engenharia e o VEXcode V5 prontos.
| 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) |
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.

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.
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.
Passo 2: Vamos começar a programar com instruções condicionais.
-
Abra o projeto de exemplo de modelo Clawbot (Drivetrain 2-motor, No Gyro).

- 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.
- 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.
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.
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());A 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.
- 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.
- 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
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.
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:

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