Na Lição anterior, você aprendeu a codificar o Braço de 6 Eixos para pegar e colocar um Cubo no palete. Nesta lição, você aproveitará o que aprendeu para mover vários cubos para o palete. Você aprenderá a:
- Planeie os locais de entrega dos Cubos que irá colocar na palete.
- Codifique o Braço de 6 Eixos para mover dois Cubos com sucesso para o palete.
No final da Aula, irá construir o seu projeto para recolher e colocar quatro Cubos na palete na Atividade.

Pensando em Posicionamento no Pallet
Na lição anterior, você moveu um cubo para o palete e o colocou no centro. Um dos benefícios de enviar grandes quantidades de itens usando um palete é que muitos objetos podem ser transportados de uma só vez. Para fazer isso de forma eficaz, esses objetos precisam ser organizados de maneira eficiente para permitir que as empresas embalem mais em cada palete que enviam.
Um palete seria uma maneira ineficiente e cara de mover um ou dois objetos pequenos, como a
situação de colocar um Cubo no centro do palete. Colocar mais cubos no palete, no entanto, torna
o envio mais eficiente e econômico. 
Para fazer isso, precisaremos pensar em onde cada um dos Cubos será colocado no palete. Ao longo desta lição, você aprenderá a codificar o braço de 6 eixos para mover vários cubos e colocá-los efetivamente no palete juntos.
Coloque o primeiro cubo
Seu projeto da Lição 2 moveu um Cubo para o centro do palete. O primeiro passo para colocar vários Cubos é ajustar o local de entrega do primeiro Cubo – colocando-o no canto do palete.
Abra o seu projeto a partir da Lição 2 em VEXcode EXP.

Renomeie o projeto para Unidade 7 Lição 3 e salve-o no seu dispositivo.

Coloque o Cubo no canto do palete.
Mova manualmente o braço de 6 eixos para que o ímã toque a parte superior do cubo.

Certifique-se de que o braço de 6 eixos esteja conectado ao VEXcode.
Selecione o ícone Monitor na Barra de Ferramentas para abrir o Monitor.

Grave as coordenadas x e y do Console do Monitor no seu caderno de engenharia. Estas serão as coordenadas x e y do local de entrega do Cubo.
Lembre-se de que o braço de 6 eixos se moverá acima do local de entrega antes de mover o cubo para o palete. Isto significa que não precisa de registar o valor z.

Introduza as coordenadas x e y do novo local de entrega no seu projeto. A coordenada z deve permanecer a mesma, de modo que o braço de 6 eixos permaneça acima do local de entrega.
Certifique-se de usar as suas coordenadas, pois as mostradas aqui são um exemplo e podem variar das suas próprias coordenadas gravadas.

Certifique-se de que o braço de 6 eixos esteja conectado ao VEXcode e que o cubo esteja colocado na zona de carregamento.
Execute o projeto para testá-lo. Observe os comportamentos do braço de 6 eixos. Ele pega e coloca o Cubo no canto do palete como pretendido? Por que sim ou por que não?

Pare o projeto quando o braço de 6 eixos parar de se mover. Registe as suas observações no seu caderno de engenharia.

Mover um segundo cubo
Agora que o primeiro Cubo está no novo local de entrega, há espaço no palete para colocar cubos
adicionais. Os mesmos comportamentos usados para mover o primeiro Cubo serão repetidos para
mover um segundo. O Braço de 6 Eixos precisará se mover para o mesmo local de coleta, engatar o
Ímã, mover o Cubo para o palete e soltar o Cubo.
Existem várias estratégias de codificação que você pode tentar para ajudar a mover os dois Cubos com sucesso.
Adicionar um bloco de repetição
Sabendo que uma sequência de comportamentos será repetida, a primeira estratégia a ser tentada é usar um bloco Repetir. Como aprendemos na Unidade anterior, um bloco Repetir é útil para repetir blocos ou uma pilha de blocos em um projeto.
Adicione um bloco Repetir ao seu projeto abaixo do bloco Definir efetor final, como mostrado aqui.
Arraste o bloco Move the Cube to the pallet Comment para o bloco Repeat, como mostrado aqui. Isso também arrastará todos os blocos subsequentes para o bloco Repetir.
Agora, todos os blocos necessários para pegar e colocar um Cubo do local de retirada até o canto do palete podem ser repetidos.
Defina o parâmetro no bloco Repetir para 2.
Como você está tentando mover dois cubos para o palete, os comportamentos serão repetidos duas vezes.

Leia o código que você criou e preveja o que o Braço de 6 Eixos fará quando o projeto for executado.
Grave a sua previsão no seu caderno de engenharia. Você pode esboçar o caminho do Braço de 6 Eixos ou desenhar onde os Cubos serão colocados no palete.

Certifique-se de que o braço de 6 eixos esteja conectado ao VEXcode.
Execute o projeto para testá-lo. Observe os comportamentos do braço de 6 eixos quando o projeto for executado.

Pare o projeto quando o Braço de 6 Eixos terminar de se mover. Registe as suas observações no seu caderno de engenharia.
O braço de 6 eixos moveu ambos os cubos para o palete com sucesso? Por que sim ou por que não?

Isso não moveu o segundo Cubo como pretendido e causou um erro. Uma vez que o primeiro Cubo foi colocado nessa posição, o segundo Cubo também não pode ser colocado no mesmo local. O Braço de 6 Eixos não conseguiu chegar ao local, então ocorreu um erro.
Para colocar o segundo Cubo no palete, precisaremos deslocar este Cubo para uma posição aberta no palete.
Mova o segundo cubo em relação ao primeiro
Conhecer a posição do primeiro Cubo no palete significa que o próximo Cubo pode ser colocado em relação ao primeiro. Você aprendeu sobre o movimento relativo na Unidade anterior e agora pode aplicar esses conceitos para ajudar a colocar o segundo Cubo.
Para alcançar o próximo canto do palete, o braço de 6 eixos se moverá na direção positiva ao
longo do eixo y. 
Usando o que é conhecido sobre o tamanho do Cubo, o deslocamento necessário para colocar o segundo Cubo pode ser determinado. O deslocamento é a diferença entre a localização atual e a localização desejada de um objeto. No palete, o deslocamento para o segundo Cubo é a distância entre o centro do primeiro Cubo e o centro do segundo Cubo no local desejado.
Dado que um Cubo tem 25 mm de largura, podemos aproximar que o deslocamento é de 50 mm.
Agora que você sabe a distância e a direção do movimento relativo necessário, essas informações podem ser adicionadas ao projeto.
Adicione um bloco de posição Increment ao projeto, como mostrado aqui.
Defina o parâmetro y para 50. Isso indica um movimento relativo de 50 mm ao longo do eixo y.

Leia o código e preveja o comportamento do Braço de 6 Eixos.
Grave a sua previsão no seu caderno de engenharia. Você acha que este projeto colocará com sucesso ambos os Cubos nos locais desejados? Por que sim ou por que não?

Certifique-se de que o braço de 6 eixos esteja conectado ao VEXcode. Execute o projeto para testá-lo.
Observe o comportamento do braço de 6 eixos.

Pare o projeto quando o braço de 6 eixos terminar de se mover. Registe as suas observações no seu caderno de engenharia.
A sua observação correspondeu à sua previsão? Os dois Cubos são movidos para os locais pretendidos no palete? Por que sim ou por que não?

Como você pode ter previsto, este projeto também não move ambos os Cubos para os locais pretendidos. O bloco de posição de incremento moveu corretamente o braço de 6 eixos para a posição desejada para o segundo cubo. No entanto, como todos os comportamentos foram repetidos, ambos os Cubos foram movidos para este local. Isso criou o mesmo erro do projeto anterior, apenas em um local diferente no palete.
O objetivo é colocar o primeiro Cubo no primeiro local e o segundo Cubo no segundo local no palete. Para fazer isso com sucesso, o projeto precisa acompanhar qual Cubo está sendo movido. Se o primeiro Cubo estiver sendo movido, ele deve ir para o primeiro local. Se o segundo Cubo estiver sendo movido, ele pode ser colocado no segundo local.
Mover Dois Cubos Usando Variáveis e um Bloco If then
Para acompanhar qual Cubo está sendo movido, uma variável pode ser criada e usada no projeto para essencialmente 'contar' os Cubos à medida que eles estão sendo manipulados. Uma variável pode ser usada para armazenar informações sobre qual Cubo está sendo movido. Essas informações podem ser usadas para tomar uma decisão dentro do projeto – se o Braço de 6 Eixos estiver movendo o segundo Cubo, ele deverá movê-lo para o segundo local no palete.
Crie uma variável e nomeie-a CubeCount. Selecione Enviar para criar a variável.
Você pode revisitar a Lição 2 da Unidade 6 para obter lembretes sobre como criar uma variável no VEXcode.

Adicione o bloco Definir variável ao projeto acima do bloco Repetir, como mostrado aqui.
Defina o parâmetro para 1. Certifique-se de que a variável CubeCount está selecionada no menu suspenso.
Quando o projeto for iniciado, o primeiro Cubo será recolhido. Como o objetivo desta variável é numerar o Cubo que está sendo movido, ele precisa ser definido como '1' para começar.

Anteriormente, um bloco de posição de incremento foi adicionado para mover o braço de 6 eixos para o segundo local de entrega. Para mover o primeiro Cubo para o local de entrega, este bloco precisa ser excluído.
Clique com o botão direito no bloco de posição Incrementar e exclua-o, conforme mostrado aqui.
Adicione um bloco Alterar variável à parte inferior do bloco Repetir, como mostrado aqui.
Quando o projeto for executado, o primeiro Cubo será movido para o local de entrega. Adicionar o bloco Alterar variável aqui fará com que a CubeCount aumente após a entrega do primeiro Cubo. Quando o bloco Repetir volta para pegar o segundo Cubo, a variável é aumentada '2', indicando que o segundo Cubo está sendo movido.
Agora que o projeto está armazenando informações sobre o número de cubos, podemos usar essas
informações para tomar uma decisão. Um bloco If then nos permite fazer uma
pergunta dentro de um projeto e usar informações (como o valor de uma variável) para tomar
uma decisão. 
O bloco If then é um bloco C que aceita blocos reportadores booleanos como uma condição. Um bloco booleano retorna uma condição como VERDADEIRO ou FALSO e se encaixa dentro de qualquer bloco com uma entrada hexagonal. Se a condição for relatada como VERDADEIRA, os blocos dentro do bloco C serão executados. Se a condição for relatada como FALSA, o bloco If then será ignorado no projeto.
Neste caso, a condição que estamos procurando é que avariável CubeCount seja 2. Se a variável CubeCount for 2, o braço de 6 eixos precisa se mover para a segunda posição no palete.
Vamos pensar em onde no projeto essa decisão precisa ser tomada. O projeto pegará o Cubo na zona
de carregamento e, em seguida, mover-se-á acima do local de entrega. Se a
CubeCount for 2, o braço de 6 eixos precisará realizar um comportamento
extra para se mover para a segunda posição do palete. 
Adicione um bloco Se, em seguida, ao projeto, conforme mostrado aqui.

Adicione um Equal para bloquear no espaço hexagonal no bloco If then, como mostrado aqui.
Adicione a variável CubeCount no lado esquerdo do operador Equal to. Defina o lado direito do operador igual a 2, como mostrado neste vídeo.
Se a variável CubeCount for igual a 2, a condição booleana será relatada como VERDADEIRA. Se o CubeCount não for 2, a condição booleana será relatada como FALSA.
Adicione um bloco de posição de incremento dentro do bloco C, como mostrado aqui.
Defina o parâmetro y do bloco de posição de incremento para 50.
Quando a condição do bloco If then for atendida, o bloco de posição Increment dentro do bloco If then será executado. Isso significa que, se o CubeCount for 2, o braço de 6 eixos fará o movimento relativo para a segunda posição no palete.

Leia o código e preveja o que o Braço de 6 Eixos fará quando o projeto for executado.
Grave a sua previsão no seu caderno de engenharia.

Certifique-se de que o braço de 6 eixos esteja conectado ao VEXcode. Execute o projeto para testá-lo.
Observe o comportamento do braço de 6 eixos enquanto o projeto é executado.

Pare o projeto quando o braço de 6 eixos terminar de se mover. Registe as suas observações no seu caderno de engenharia.
O braço de 6 eixos se moveu como você previu? Ambos os Cubos foram movidos para o palete como pretendido? Por que sim ou por que não?

Para sua informação
Você pode executar o projeto várias vezes, para que possa prestar atenção aos blocos que
estão em execução à medida que o Braço de 6 Eixos se move. Procure o destaque em torno
dos blocos à medida que são executados no projeto, para ajudá-lo a entender melhor
quando o bloco If then é executado. Você também pode usar o recurso
Etapa para executar o projeto um bloco de cada vez, para ajudá-lo a ver o fluxo
do projeto com o bloco Se, em seguida, com mais clareza. 
Lembre-se de que você pode adicionar uma variável ao Monitor, para ajudar a ver o valor CubeCount enquanto o projeto está em execução. Para adicionar uma variável ao Monitor, arraste a variável para o ícone Monitor no Espaço de Trabalho, conforme mostrado neste vídeo. Ao executar o projeto, certifique-se de observar a variável no Monitor, para ajudá-lo a ver a conexão entre o valor da variável e o fluxo do projeto.
Revisão do Projecto
Vamos rever o processo de resolução de problemas que foi usado para resolver o desafio de colocar dois cubos no palete. Houve várias iterações do projeto para que o Braço de 6 Eixos movesse ambos os Cubos como pretendido:
- Um bloco Repetir foi adicionado para repetir os comportamentos necessários para pegar, mover e entregar um Cubo no palete.
- Um bloco de posição de incremento foi adicionado para mover o segundo cubo para uma posição aberta no palete.
- Uma variável foi adicionada para contar os Cubos, para que uma decisão pudesse ser tomada com base em qual Cubo estava sendo movido.
- Um bloco If then foi adicionado para tomar uma decisão com base no valor da variável.
Todas essas iterações juntas criaram um projeto que pegou e entregou ambos os Cubos com
sucesso. Quando o segundo Cubo
foi recolhido, o Braço de 6 Eixos novamente moveu o Cubo acima do local de entrega original
no palete. Então uma decisão foi tomada.
Como a CubeCount é '2', o bloco dentro
do bloco If then é executado, movendo o Cubo ao longo do eixo y para a
posição desejada do palete.
O processo iterativo em que você se envolveu ao longo desta Lição é algo que você continuará a fazer cada vez que resolver um desafio com o Braço de 6 Eixos. É importante lembrar que a maioria dos desafios de codificação não será resolvida perfeitamente na primeira tentativa. Este processo de planeamento, construção, teste e avaliação é aquele que pode levar o seu grupo a encontrar soluções criativas. A maioria dos desafios pode ser resolvida de várias maneiras, portanto, ao se envolver nesse processo de forma colaborativa, você pode encontrar a estratégia que funciona melhor para o seu grupo.
Actividade
Agora que você moveu dois Cubos da zona de carregamento para o palete, você praticará essas habilidades. Nesta atividade, você desenvolverá o seu projeto a partir desta lição para codificar o braço de 6 eixos e mover quatro cubos para o palete.

Atividade: codifique o braço de 6 eixos para colocar quatro cubos num palete.
- Planeie como irá construir o seu projeto para codificar o Braço de 6 Eixos para recolher
o Cubo adicional da zona de carregamento e colocá-lo na palete com o seu
grupo. Certifique-se de que todos concordam com a sua abordagem antes de começar a
editar o projeto.
- Documente o seu plano no seu caderno de engenharia.
- Renomeie o seu projeto Unidade 7 Atividade da Lição 3 e salve-o no seu dispositivo antes de começar a editar o projeto.
- Edite o projeto no VEXcode para corresponder ao plano acordado pelo seu grupo.
- Execute o projeto para testá-lo. Coloque manualmente o segundo, terceiro e quarto Cubos na zona de carregamento uma vez que cada Cubo tenha sido colocado.
- O Braço de 6 Eixos move com sucesso os Cubos como você pretendia? Deve haver quatro cubos no palete. Caso contrário, continue a editar o projeto até ter colocado com sucesso todos os quatro Cubos.
Verifique a sua compreensão
Antes de passar para a próxima lição, certifique-se de entender os conceitos desta lição respondendo às seguintes perguntas em seu caderno de engenharia.
Verifique as suas perguntas de compreensão > (Google Doc / .docx / .pdf)
Selecione Avançar > para passar para a Atividade de Colocar Tudo Junto.