Programação dos comandos
Os comandos são o que dá acções ou comandos a diferentes partes do robô. Neste exemplo, vamos dar acções ou comandos ao subsistema intake.java. As acções ou comandos que vamos dar ao intake são:
IntakeIn
IntakeOut
IntakeStop
Podes encontrar estes ficheiros na pasta de comandos.
Existem três ficheiros diferentes para cada comando, porque cada comando precisa do seu próprio ficheiro, o que será útil quando começarmos a programar o controlador do robô. Quando encontrares os ficheiros, clica em IntakeInCMD.java.
IntakeInCMD
Embora cada comando faça algo diferente, o passo a passo para cada comando é muito semelhante. Por isso, estes serão divididos em passos e cada passo será referido mais tarde.
Primeiro, vamos ao ficheiro IntakeInCMD.java. Devido ao facto de os métodos que criámos no código do subsistema estarem num ficheiro diferente, temos de criar uma variável que nos permita aceder aos métodos. Para o fazer, adicionamos o seguinte código à linha 12:
public final intake m_intake;
Deve ter o aspeto da fotografia abaixo.
Terá uma linha vermelha por baixo de "IntakeInCMD()", mas isso será corrigido no passo seguinte.
Para explicar a linha de código:
public significa que o método pode ser utilizado em qualquer parte do código.
final significa que a variável só pode ser definida uma vez
intake é o nome do subsistema
m_intake é a variável que vamos utilizar para aceder aos métodos do subsistema intake.java
De seguida, temos de corrigir a linha vermelha em IntakeInCMD(). Para o fazer, vamos acrescentar
intake intake_subsystem
entre os dois parênteses na linha 13. Isto permite-nos passar informações sobre o subsistema para o código. De seguida, escrevemos o seguinte código no interior do método na linha 14
m_intake = intake_subsystem;
addRequirements(m_intake);
A primeira parte é definir a informação como igual à variável que definimos na linha 12. A segunda parte é dizer ao código que ele precisa do subsistema para ser executado.
O seu código deve ser parecido com a foto abaixo
De seguida, temos de dizer ao robô o que fazer quando o comando é executado. Fazemo-lo escrevendo código no método execute(). Dentro do método execute(), vamos executar o método intakeIn() que escrevemos no subsistema intake. Para isso, colocamos o seguinte código no método excture(), na linha 26
m_intake.intakeIn();
O resultado deve ser parecido com a foto abaixo
O que este código faz é procurar dentro do subsistema de admissão e utilizar o método intakeIn para executar o código dentro do método intakeIn que escreveu.
Agora, temos de nos certificar de que o mecanismo do robô pára quando é suposto. Para o fazer, vamos utilizar o método stopintake() que criámos no subsistema, vamos colocar o código
m_intake.intakestop();
na linha 32, dentro do método end.
O resultado deve ser parecido com a foto abaixo
Agora vamos programar o comando para girar o motor na outra direção. Primeiro, abra o arquivo intakeOutCMD.java. Ele está na pasta "Commands" sob o ficheiro IntakeInCMD.java. A configuração também é a mesma que escreveste para o intakeInCMD. A única diferença é o método que é chamado no método execute(). Por isso, pode voltar ao intakeInCMD, ver o passo 1 e segui-lo novamente. Quando terminar, o resultado deve ser parecido com a foto abaixo
De seguida, temos de dizer ao robô o que fazer quando o comando é executado. À semelhança do que fizemos com intakeInCMD(), vamos ao método execute e executamos o método intakeOut() que escrevemos no subsistema intake.java. Pode olhar para o passo 2 e segui-lo novamente. Quando terminar, o resultado deve ser parecido com a foto abaixo
Depois disso, vamos inserir o código para que o motor pare de girar quando o código terminar. Para o fazer, pode voltar atrás e seguir novamente o passo 3. Quando tiveres terminado, deve ficar parecido com a foto
Agora vamos programar o comando para parar de girar quando o intake não for necessário. Mais uma vez, a configuração também é a mesma que escreveu para intakeInCMD e intakeOutCMD.A única diferença é o método que se chama no método execute(). Por conseguinte, pode voltar ao intakeInCMD, ver o passo 1 e segui-lo novamente. Quando tiver terminado, deverá ter o aspeto da fotografia abaixo
De seguida, temos de dizer ao robô o que fazer quando o comando é executado. Vamos ao método execute() e executamos o método intakeStop() que escrevemos no subsistema intake.java. Podes voltar ao passo 2 e segui-lo novamente.Quando tiveres terminado, a imagem deve ser parecida com a da foto abaixo.
Depois disso, vamos inserir o código para que o motor pare de girar quando o código terminar.Para o fazer, pode voltar atrás e seguir novamente o passo 3. Quando tiveres terminado, deve ficar parecido com a foto abaixo
Agora já está tudo pronto! Programaste o mecanismo do robô para que ele possa receber uma peça do jogo!