BLOCO SWITCH O bloco switch (switch block), que pertence a uma categoria de blocos de programação chamados blocos de fluxo (flow blocks), permite ao programa escolher um feixe de sequência entre duas alternativas, sendo essa escolha baseada numa condição específica. Posicione os conjuntos de blocos que pretende ter como alternativas um no feixe de sequência de cima e outro no feixe de sequência de baixo (estes feixes encontram-se dentro do bloco switch). Na figura 1 o bloco loop (em flat view) está com a sua configuração por defeito na qual a escolha é feita através do sensor de toque. Colado ao lado esquerdo do bloco switch temos a indicação de qual sensor está a ser utilizado. Os símbolos, de cima para baixo, representam, respectivamente: a condição que levará ao caminho de cima, a condição especificada e a condição que levará ao caminho de baixo. O número presente representa a porta escolhida para o sensor. Na figura 2, o mesmo bloco encontra-se sem ser em flat view, sendo apenas visível um caminho de cada vez. Figura 2 O mesmo bloco da figura 1 mas sem ser em flat view Figura 1 Bloco switch (escolha feita através do sensor de toque) em flat view O bloco switch pode ser configurado para 2 formas de escolher o caminho: através de um sensor ou através de um valor (que pode ser lógico, número ou texto). PARÂMETROS DO BLOCO SWITCH ESCOLHA ATRAVÉS DE UM SENSOR (TOQUE) No caso dos blocos switch que decidem através de 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 3 - Painel de parâmetros do bloco switch (sensor de toque) Neste parâmetro é escolhido o sensor a utilizar que neste caso é o sensor de toque (touch sensor). Porta (Port): NXT. Especifique qual é a porta de entrada (input port) que o sensor de toque está a usar no Acção (Action): Especifique qual é a condição a testar: se o sensor de toque é premido (pressed), solto (released) ou se é tocado (bumped). Caso a condição testada seja verdadeira, o caminho de cima será escolhido. Caso contrário, será escolhido o caminho de baixo. ESCOLHER ATRAVÉS DE UM SENSOR (SENSOR DE LUZ) Figura 4 Painel de parâmetros para o bloco switch (sensor de luz)
Neste parâmetro é escolhido o sensor a utilizar que neste caso é o sensor de luz (light sensor). Porta (Port): NXT. Especifique qual é a porta de entrada (input port) que o sensor de luz está a usar no Comparar (Compare): 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 escolher o caminho de cima se a intensidade de luz for menor ou maior que a especificada, caso contrário o caminho de baixo será escolhido. Função (Function): Especifique se o robô deve gerar luz ou não. ESCOLHER ATRAVÉS DE UM SENSOR (SENSOR DE SOM) Figura 5 Painel de parâmetros para o bloco switch (som) Neste parâmetro é escolhido o sensor a utilizar que neste caso é o sensor de som (sound sensor).
Porta (Port): NXT. Especifique qual é a porta de entrada (input port) que o sensor de som está a usar no Comparar (Compare): 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 escolher o caminho de cima se a intensidade do som for menor ou maior que a especificada, caso contrário o caminho de baixo será escolhido. ESCOLHER ATRAVÉS DE UM SENSOR (SENSOR ULTRA-SÓNICO) Figura 6 Painel de parâmetros para o bloco switch (sensor ultra-sónico) Neste parâmetro é escolhido o sensor a utilizar que neste caso é o sensor ultra-sónico (ultrasonic sensor). Mostrar (Show lado esquerdo): Porta (Port): Especifique qual é a porta de entrada (input port) que o sensor ultra-sónico está a usar no NXT. Comparar (Compare): 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 escolher o caminho de cima se a distância for menor ou maior que a especificada, caso contrário o caminho de baixo será escolhido. Mostrar (Show lado direito): Seleccione se quer ler o valor em centímetros ou em polegadas. ESCOLHER ATRAVÉS DE UM SENSOR (BOTÕES DO NXT) Figura 7 Painel de parâmetros para o bloco switch (botões do NXT) Neste parâmetro é escolhido o sensor a utilizar que neste caso são os butões do NXT (NXT buttons). 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 escolha o caminho de cima. Acção (Action): Especifique qual é a condição a testar: se o botão é premido (pressed), solto (released) ou se é tocado (bumped). Caso a condição testada seja verdadeira, o caminho de cima será escolhido. Caso contrário, será escolhido o caminho de baixo.
ESCOLHER ATRAVÉS DE UM SENSOR (RECEIVE MESSAGE) Figura 8 Painel de parâmetros para o bloco switch (Receive Message) Neste parâmetro é escolhido o sensor a utilizar que neste caso é o bluetooth do NXT receber uma mensagem (receive message). 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. ESCOLHER ATRAVÉS DE UM SENSOR (ROTATION SENSOR) Figura 9 Painel de parâmetros para o bloco switch (Rotation Sensor)
Neste parâmetro é escolhido o sensor a utilizar que neste caso é o sensor de rotações dos motores (rotation sensor). 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. Comparar (Compare): 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) deseja. Caso isso se verifique, o NXT escolhe o caminho de cima. Caso contrário, o caminho de baixo será escolhido. ESCOLHER ATRAVÉS DE UM SENSOR (TIMER) Figura 10 Painel de parâmetros para o bloco switch (Timer) Neste parâmetro é escolhido o sensor a utilizar que neste caso é temporizador (timer).
Temporizador (Timer): Especifique qual o temporizador interno do NXT a utilizar. O programa vai escolher o caminho de cima se temporizador escolhido tiver um certo valor temporal. Caso isso não se verifique, o caminho de baixo será escolhido. Acção (Action): Especifique se quer ler o sensor ou fazer reset (pôr a zero) ao mesmo. Comparar (Compare): Insira o valor (em segundos) que fará com que o bloco switch escolha o caminho de cima. Pode-se utilizar o menu para fazer subir ou descer o valor temporal contido no temporizador. ESCOLHER ATRAVÉS DE UM VALOR (LÓGICO) Figura 11 Painel de parâmetros do bloco switch (escolher através de um valor lógico) Tipo (Type): Neste parâmetro é escolhido tipo de valor a testar. Condições (Conditions): Especifique se o NXT deve seguir o caminho de cima caso o valor lógico recebido é true ou false.
ESCOLHER ATRAVÉS DE UM VALOR (NÚMERO) Figura 12 Painel de parâmetros do bloco switch (escolher através de um valor numérico) Tipo (Type): Neste parâmetro é escolhido tipo de valor a testar. Condições (Conditions): Especifique se o NXT deve seguir o caminho de cima caso o valor numérico recebido é o escolhido aqui. Os valores presentes na lista podem ser alterados através da caixa de texto em baixo. ESCOLHER ATRAVÉS DE UM VALOR (TEXTO) Figura 13 Painel de parâmetros do bloco switch (escolher através de um valor textual) Tipo (Type): Neste parâmetro é escolhido tipo de valor a testar.
Condições (Conditions): Especifique se o NXT deve seguir o caminho de cima caso o valor lógico recebido é o escolhido aqui. Os valores presentes na lista podem ser alterados através da caixa de texto em baixo. EXEMPLO DE UM BLOCO SWITCH Na figura 14 está um exemplo da utilização de um bloco switch num programa e a sua respectiva configuração. Neste caso, o caminho de cima será escolhido caso o sensor de toque seja pressionado e o de baixo será escolhido caso o sensor de toque seja solto. Quanto aos blocos de programação dentro dos caminhos são exactamente os mesmos: um bloco move, um bloco sound e um bloco display. A única diferença entre os dois caminhos é a ordem pela qual estes blocos são executados, sendo que no caminho de cima o bloco move é executado primeiro e o bloco display é executado no fim, no caminho de baixo é o bloco display executado primeiro e o move no fim. Quanto ao bloco de som, mantêm-se em ambos os caminhos a ser executado no meio. Figura 14 Exemplo de um bloco switch (escolher através do sensor de toque)