BLOCO LOOP O bloco loop (loop block), que pertence a uma categoria de blocos de programação chamados blocos de fluxo (flow blocks), repete uma série de blocos até uma condição especificada ser satisfeita, como por exemplo, um sensor ser activado. Este é um dos blocos que permite alterar o fluxo de controlo mudando a ordem de execução dos blocos num feixe de sequência. Posicione os blocos que pretende que sejam repetidos no feixe de sequência dentro do bloco loop. Na figura 1 o bloco loop está com a sua configuração por defeito na qual ele repete os blocos para sempre e na figura 2 está configurado para repetir até um sensor ser activado. Neste caso, o símbolo do sensor aparecerá do lado direito do bloco loop, “colado” a ele. Figura 1 – Bloco loop (repetir para sempre) Figura 2 – Bloco loop (repetir até o sensor de toque ser activado) O bloco loop pode ser configurado para 5 formas de controlar o limite da repetição: para sempre, até um sensor ser activado, durante um certo tempo, durante um número específico de vezes ou até receber um determinado valor lógico (através de um data wire). PARÂMETROS DO BLOCO LOOP REPETIR PARA SEMPRE Figura 3 – Painel de parâmetros do bloco loop (repetir para sempre) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. REPETIR ATÉ UM SENSOR (SENSOR DE TOQUE) No caso dos blocos loop que repetem até uma condição de um sensor ser satisfeita, a feedback box (lado inferior esquerdo) ajuda a testar as condições que se aguarda. Por exemplo, no sensor de toque, quando o butão é premido o número na caixa fica a 1. Quando este não é premido, o número fica a zero, como se verifica na Figura 4. Figura 4 - Painel de parâmetros do bloco loop (sensor de toque) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Sensor (Sensor): Neste parâmetro é escolhido o sensor a utilizar que neste caso é o sensor de toque (touch sensor). Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. Porta (Port): Especifique qual é a porta de entrada (input port) que o sensor de toque está a usar no NXT. Acção (Action): Especifique qual é a condição a testar: se o sensor de toque é premido (pressed), solto (released) ou se é “tocado” (bumped). REPETIR ATÉ UM SENSOR (SENSOR DE LUZ) Figura 5 – Painel de parâmetros para o bloco loop (sensor de luz) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Sensor (Sensor): Neste parâmetro é escolhido o sensor a utilizar que neste caso é o sensor de luz (light sensor). Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. Porta (Port): Especifique qual é a porta de entrada (input port) que o sensor de luz está a usar no NXT. Até (Until): Especifique qual é a condição a testar. Através do elevador horizontal ou da caixa de texto no canto inferior direito deste parâmetro, defina a intensidade da luz desejada. Através dos botões do lado esquerdo e direito do elevador horizontal ou do menu por baixo do mesmo escolha se deseja repetir até a intensidade de luz ser menor ou maior que a especifique. Função (Function): Especifique se o robô deve gerar luz ou não. REPETIR ATÉ UM SENSOR (SENSOR DE SOM) Figura 6 – Painel de parâmetros para o bloco loop (som) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Sensor (Sensor): Neste parâmetro é escolhido o sensor a utilizar que neste caso é o sensor de som (sound sensor). Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. Porta (Port): Especifique qual é a porta de entrada (input port) que o sensor de som está a usar no NXT. Até (Until): Especifique qual é a condição a testar. Através do elevador horizontal ou da caixa de texto no canto inferior direito deste parâmetro, defina a intensidade do som (volume) desejada. Através dos botões do lado esquerdo e direito do elevador horizontal ou do menu por baixo do mesmo escolha se deseja repetir até a intensidade do som ser menor ou maior que a especificada. REPETIR ATÉ UM SENSOR (SENSOR ULTRA-SÓNICO) Figura 7 – Painel de parâmetros para o bloco loop (sensor ultra-sónico) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Sensor (Sensor): Neste parâmetro é escolhido o sensor a utilizar que neste caso é o sensor ultra-sónico (ultrasonic sensor). Mostrar (Show – lado esquerdo): Especifique se deseja utilizar o número de repetições como input para outro bloco. Porta (Port): Especifique qual é a porta de entrada (input port) que o sensor ultra-sónico está a usar no NXT. Até (Until): Especifique qual é a condição a testar. Através do elevador horizontal ou da caixa de texto no canto inferior direito deste parâmetro, defina a distância desejada. Através dos botões do lado esquerdo e direito do elevador horizontal ou do menu por baixo do mesmo escolha se deseja repetir até a distância ser menor ou maior que a especificada. Mostrar (Show – lado direito): Seleccione se quer ler o valor em centímetros ou em polegadas. REPETIR ATÉ UM SENSOR (BOTÕES DO NXT) Figura 8 – Painel de parâmetros para o bloco loop (botões do NXT) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Sensor (Sensor): Neste parâmetro é escolhido o sensor a utilizar que neste caso são os botões do NXT (NXT buttons). Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. Botão (Button): Neste parâmetro é escolhido o botão do NXT que enviará um sinal “true” quando activado e fará com que o programa continue. Acção (Action): Especifique qual é a condição a testar: se o botão é premido (pressed), solto (released) ou se é “tocado” (bumped). REPETIR ATÉ UM SENSOR (RECEIVE MESSAGE) Figura 9 – Painel de parâmetros para o bloco loop (Receive Message) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Sensor (Sensor): Neste parâmetro é escolhido o sensor a utilizar que neste caso é o bluetooth do NXT receber uma mensagem (receive message). Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. Mensagem (Message): Para comparar a mensagem recebida com uma mensagem de teste, tanto se pode escrever o texto ou o número (se foi escolhido texto ou número como formato) como usar os botões para escolher o valor lógico do teste (verdadeiro ou falso). Caixa de correio (Mailbox): Escolha o número da caixa de correio para o qual a mensagem vai chegar. REPETIR ATÉ UM SENSOR (ROTATION SENSOR) Figura 10 – Painel de parâmetros para o bloco loop (Rotation Sensor) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Sensor (Sensor): Neste parâmetro é escolhido o sensor a utilizar que neste caso é o sensor de rotações dos motores (rotation sensor). Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. Porta (Port): Especifique qual é a porta a que o motor a ser testado está conectado. Acção (Action): Especifique se quer ler o sensor ou fazer reset (pôr a zero) ao mesmo. Até (Until): Use os botões para escolher qual a direcção desejada: frente ou trás. Através do menu no canto inferior direito escolha se deseja contar em rotações ou graus e na caixa de texto do lado esquerdo do menu indique quantas rotações (ou graus) deve repetir o programa até sair do bloco loop. REPETIR ATÉ UM SENSOR (TIMER) Figura 11 – Painel de parâmetros para o bloco loop (Timer) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Sensor (Sensor): Neste parâmetro é escolhido o sensor a utilizar que neste caso é temporizador (timer). Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. Temporizador (Timer): Especifique qual o temporizador interno do NXT a utilizar. O programa vai progredir assim que o temporizador escolhido chegar a um certo valor temporal. Acção (Action): Especifique se quer ler o sensor ou fazer reset (pôr a zero) ao mesmo. Até (Until): Insira o valor (em segundos) que fará com que o bloco loop termine e deixe o programa progredir na caixa de texto. Pode-se utilizar o menu para fazer subir ou descer o valor temporal contido no temporizador. REPETIR DURANTE UM CERTO TEMPO Figura 12 – Painel de parâmetros do bloco loop (repetir durante um certo tempo) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Até (Until): Especifique o número de segundos que o bloco loop deve aguardar até parar de repetir o feixe de sequência nele contido. Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. REPETIR UM NÚMERO ESPECÍFICO DE VEZES Figura 13 – Painel de parâmetros do bloco loop (repetir um número específico de vezes) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Até (Until): Especifique o número de vezes que o bloco loop deve repetir o feixe de sequência nele contido. Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. REPETIR ATÉ RECEBER UM DETERMINADO VALOR LÓGICO Figura 14 – Painel de parâmetros do bloco loop (repetir até receber um valor lógico) Controlo (Control): Este campo serve para especificar até quando o bloco deve repetir o feixe de sequência que contém, ou seja, qual a condição de paragem. Até (Until): Especifique se o valor lógico desejado é verdadeiro (true) ou falso (false). Mostrar (Show): Especifique se deseja utilizar o número de repetições como input para outro bloco. EXEMPLO DE UM BLOCO LOOP Na figura 15 está um exemplo da utilização de um bloco loop num programa e a sua respectiva configuração. Neste caso, ele repetirá um bloco move, um bloco sound e um bloco display cinco vezes. Figura 15 – Exemplo de um bloco loop (repetir um número específico de vezes)