Controlador: Exploração de Tank Drive - C++
Caixa de ferramentas do professor
-
O objetivo desta atividade
A utilização do projeto de exemplo Tank Control permite que os alunos controlem o Clawbot utilizando o Controller. Os alunos terão de ajustar os parâmetros em LeftMotor.setVelocity(), RightMotor.setVelocity(), LeftMotor.spin(), RightMotor.spin(), leftMotorSpeed=Controller1.Axis3.position(), e rightMotorSpeed = Instruções do Controller1.Axis2.position() para controlar a velocidade de cada um dos motores do Clawbot e permitir que o controlador controle as funções do motor.
Para obter mais informações sobre qualquer uma das instruções, visite a ajuda na secção C++ no VEXcode V5.
A seguir, é apresentado um esboço do que os alunos farão nesta atividade:
-
Explore o projeto de exemplo Tank Control.
-
Compreender a utilização da estrutura while True de ciclo infinito .
-
Completa o desafio Robo-Slalom!
| 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 |
Projeto de exemplo de controlo de tanque |
| 2 ou mais |
Itens de sala de aula para serem utilizados como obstáculos |
Dicas para professores
a
utilizando o preenchimento automático
O preenchimento automático é uma funcionalidade do VEXcode V5 que prevê o resto do comando que está a escrever. À medida que os alunos trabalham no VEXcode V5, incentive-os a utilizar a funcionalidade Autocomplete para ajudar com a sintaxe . O artigo Autocomplete aborda a utilização da funcionalidade Autocomplete.

Esta atividade dar-lhe-á as ferramentas para programar o seu Controlador.
Passo 1: Vamos começar a programar o Controlador.
- Abra o projeto de exemplo Tank Control .
-

Faça o seguinte no seu caderno de engenharia:
Preveja o que o Clawbot fará neste projeto. Explique mais do que o facto de o projeto utilizar o Controlador.
Como é que os joysticks movem o robô? O que está o Clawbot a fazer?int main() { // Initializing Robot Configuration. DO NOT REMOVE! vexcodeInit(); // Begin project code. // Main Controller loop to set motors to controller axis positions while (true) { LeftMotor.setVelocity(Controller1.Axis3.position(), percent); RightMotor.setVelocity(Controller1.Axis2.position(), percent); LeftMotor.spin(forward); RightMotor.spin(forward); wait(5, msec); } return 0; }
Caixa de ferramentas do professor
-
respostas
- Este projeto utilizará a estrutura de ciclo infinito while True para verificar continuamente onde estão as posições esquerda e direita do joystick. Quando o joystick esquerdo (ou direito) é empurrado para cima, a velocidade é definida de acordo com o avanço do joystick.
- Assim, quanto mais para a frente o Joystick for empurrado, mais rápida será a velocidade definida e mais rápidos se moverão os motores. A mesma ideia funciona para empurrar o Joystick para trás. Quanto mais para trás o Joystick for empurrado, mais rapidamente os motores se moverão para trás.
- Guarde, descarregue e (C++) o projeto de exemplo Tank Control .
-
Para ajuda, consulte as secções da Biblioteca VEX em C++ ou consulte o tutorial em VEXcode V5 que explica como descarregar e executar um projeto.

- Verifique as suas explicações do projeto no seu caderno de engenharia e adicione notas para as corrigir conforme necessário.
Passo 2: Controlador: Controlo do Tanque
Caixa de ferramentas do professor
-
As estruturas de ciclos infinitos verdadeiros
Esta etapa discute a importância da estrutura de ciclo infinito while True . Deve rever as informações em classe. Pode modelar o comportamento com o seu Clawbot e Controlador ou, se o tempo o permitir, fazer com que os alunos executem o programa sem a estrutura de ciclo infinito while True .
Quais os benefícios da utilização da estrutura de ciclo infinito while True?
Eis o nosso projeto sem a estrutura de ciclo infinito while True:
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code.
// Main Controller loop to set motors to controller axis postiions
LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
RightMotor.setVelocity(Controller1.Axis2.position(), percent);
LeftMotor.spin(forward);
RightMotor.spin(forward);
}
O que acha que aconteceria se este programa fosse executado? Discuta em grupo. Anote a sua previsão no caderno de engenharia.
Caixa de ferramentas do professor
-
Compreender a estrutura
Sem o ciclo infinito while True , o valor da velocidade para cada motor é definido assim que o projeto é executado e este valor permanece constante até que o projeto seja interrompido. Por outras palavras, se executar o projeto sem mover nenhum dos Joysticks, uma vez que a posição padrão do Joystick no seu eixo é 0, a velocidade de ambos os motores permanecerá em 0, mesmo que mova o Joystick.
Da mesma forma, digamos que move o joystick esquerdo para cima ao longo do eixo 3 e o mantém nessa posição. Se executar o projeto acima, o motor esquerdo move-se a toda a velocidade e permanece a essa velocidade mesmo que mova o joystick para baixo ao longo do eixo 3. Isto acontece porque o Clawbot recebe as suas instruções iniciais do Controlador assim que o projeto é executado; no entanto, sem um Loop, este valor inicial não pode ser atualizado.
O ciclo infinito while True indica ao Clawbot para atualizar constantemente a velocidade e executar durante o projeto. Por outras palavras, o loop infinito enquanto True , neste projeto, permite alterar a velocidade de cada motor movendo o Joystick ao longo do eixo 2 ou 3, e o Clawbot responderá em conformidade até que pare o projeto ou rodar fora do Clawbot.
Passo 3: navegue num percurso de slalom!
Caixa de ferramentas do professor
-
Configurar a atividade
Organize os alunos em pequenos grupos de 2 ou 4 alunos. Um aluno deve ser designado como Condutor – a pessoa que utilizará o Controlador para manobrar o Clawbot.
Peça aos alunos que completem este slalom utilizando o Controlador para mover o Clawbot ao longo da parte exterior de cada “bandeira”. O caminho do Clawbot deve evitar que toque em qualquer bandeira e permitir-lhe cruzar a linha de chegada. As bandeiras podem ser qualquer material/objeto de sala de aula que tenha à mão (borracha, rolo de fita adesiva, caixa de lenços de papel) e podem ser colocadas antes de operar o Clawbot.
Se o tempo permitir, peça aos alunos que troquem de função para dar aos outros a oportunidade de conduzir o Clawbot. Pode até transformar isto numa competição dentro de grupos ou entre grupos, observando a rapidez com que cada piloto consegue navegar no slalom.

Os slaloms são percursos nos quais o participante deve navegar em torno das bandeiras ou marcadores definidos. Os slaloms de esqui são um desporto de inverno popular e estão incluídos nos Jogos Olímpicos de Inverno.
Agora que o controlador está emparelhado e o projecto C++ foi , está pronto para mover o seu Clawbot utilizando o controlador!
- Recolha junto do professor os quatro itens da sala de aula que irá utilizar como bandeiras no seu slalom.
- Colabore para definir as bandeiras para o condutor navegar com o Clawbot, de acordo com o diagrama de slalom.
- Descarregue o projeto Exemplo de controlo de tanque. Se houver alguma dúvida sobre como descarregar um projeto, consulte o tutorial Descarregar e executar um projeto.
Passo 4: Robo-Slalom

Utiliza o controlador para mover o teu Clawbot ao longo da parte exterior de cada “bandeira”. A trajetória do robô deve evitar que este toque em qualquer bandeira e permitir-lhe cruzar a linha de chegada.
- Executa o projeto e conduz o Clawbot para a frente e para trás, e vira à esquerda e à direita utilizando os dois Joysticks.
- Cronometre quanto tempo demora o Clawbot a completar o curso. Documente os tempos no caderno de engenharia.
- Quão rápido consegues fazer o Clawbot passar pelo percurso de Slalom?
Motivar a Discussão
-
Refletir sobre a Atividade
P: O Clawbot respondeu ao Controlador como esperava?
A: As respostas variam; no entanto, o objetivo desta questão é promover o pensamento cognitivo. Os alunos começaram por prever os comportamentos antes de os testar, documentando os seus resultados e refletindo.
P: Qual é o maior desafio em mover o Clawbot para a frente ou para trás em linha reta?
R: Embora as respostas possam variar, uma resposta comum deve ser que ambos os Joysticks devem mover-se em sincronia um com o outro para garantir que os motores do Clawbot se movem na mesma direção e à mesma velocidade
P: Como utilizar o ciclo infinito enquanto o True permite utilizar continuamente o Controlador para mover o Clawbot?
A: Sem o ciclo infinito while True , o Clawbot executaria apenas uma vez os comportamentos determinados pelas instruções do projeto. O ciclo infinito while True indica ao Clawbot para atualizar constantemente a velocidade e executar durante o projeto. Por outras palavras, o loop infinito enquanto True permite utilizar o Controlador para mover o Clawbot indefinidamente ou até que a bateria se esgote.