Clube de Programação e Eletrónica
11
Lego Ev3 – Exercícios introdutórios
PROJETO LEGO MINDSTORMS EV3
2. O sensor de toque
O Sensor de toque
O sensor de toque deteta quando o botão que se encontra à superfície do sensor de toque é pressionado. É possível usar este sendor para detetar,
por exemplo, quando o robô bate em alguma coisa. Este sensor pode também ser usado para, sendo pressionado pelo dedo do utilizador, induzir
uma ação.
O sensor de toque tanto indica que está pressionado, como que não está pressionado. Não consegue medir durante quanto tempo está o sensor
pressionado ou com quanta força foi feita a pressão. A saída do sensor de toque é uma variável lógica Verdade / Falso (True /False). À posição
do sensor de toque chama-se estado do sensor e é Verdade (True) se estiver pressionado, e Falso (False) se não estiver pressionado.
O sensor de toque também pode rastrear se o botão foi premido e libertado em ações anteriores. Chama-se a esta função Bumped e é útil para
determinar se o sensor tinha sido pressionado num momento anterior ao da ação que está a decorrer.
O sensor de toque pode fornecer os seguintes dados:
Dados Tipo Notas
Estado Lógico Verdade se o botão for premido; de contrário, Falso
Premido Lógico Verdade se o botão for premido; de contrário, Falso
Libertado Lógico Falso se o botão for premido; de contrário, Verdade
Bumped Lógico Verdade se o botão for premido e libertado no passado; para que ocorra um novo Bumped, é necessário que o botão volte a ser
premido e libertado de novo
Clube de Programação e Eletrónica
12
Lego Ev3 – Exercícios introdutórios
A função Bumped
Para além de detetar se o botão está ou não premido, o sensor de toque também guarda a informação se o sensor já foi, em momentos anteriores, premido e libertado.
A esta função chama-se Bumped. Esta função permite usar de forma simples o sensor de toque como um interruptor de pressão.
Caso o sensor de toque indique que ocorreu um Bumped, não o voltará a fazer até que o sensor de toque seja de novo pressionado e libertado, o que facilita a realização
de um programa que faça corresponder a cada toque uma ação determinada.
A tabela seguinte mostra um exemplo onde um sensor de toque é premido e libertado por duas vezes. O programa vai testando o estado da função Bumped ao longo de
oito passos.
Passo Ação Premido Libertado Bumped
1 O botão inicia sem estar premido Falso Verdade Falso
2 O botão é pressionado Verdade Falso Falso
3 O botão é libertado Falso Verdade Verdade
4 O botão continua sem estar premido e o programa testa o sensor de toque novamente Falso Verdade Falso
5 O botão é premido uma segunda vez Verdade Falso Falso
6 O botão é mantido premido e o programa volta a testar o sensor de toque Verdade Falso Falso
7 O botão é libertado Falso Verdade Verdade
8 O botão continua sem ser pressionado e o programa volta a testar o sensor de toque Falso Verdade Falso
Notar que quando o botão é mantido premido, o sensor de toque continuará a indicar Premido cada vez que o programa o testar. No entanto, assim que o botão for
libertado, o sensor só indicará Bumped na primeira vez que o programa efetuar o teste ao sensor. Para que volte a ocorrer um Bumped é necessário que se volte a premir
e a largar o botão de pressão.
Clube de Programação e Eletrónica
13
Lego Ev3 – Exercícios introdutórios
2. O bloco de programação do sensor de toque
1. Seleção da porta onde está ligado o sensor (Port seletor)
2. Seleção do modo de funcionamento (Mode selector)
3. Entradas (Inputs)
4. Saídas (Outputs)
Parâmetros configuráveis:
1. Seleção do modo de funcionamento:
Modo Função Bloco
Measure –
State
Retorna o valor do estado do sensor de toque. O estado será Verdade (True) se o
sensor de toque estiver premido; caso contrário, será Falso (False).
Compare -
State
Neste modo, pode escolher-se o qual o estado (State) que se pretende testar no
sensor de toque (Liberto – Released, premido – Pressed ou Bumped). O valor de
Compare Result será o valor do estado do modo selecionado. O estado do sensor
será indicado na saída Measured Value.
Clube de Programação e Eletrónica
14
Lego Ev3 – Exercícios introdutórios
2.2. Programando com o sensor de toque
2.2.1. Reagir quando o sensor de toque é acionado
Blocos usados:
Iniciar Mover a
direção
Esperar Loop Som
Objetivo:
Criar um programa que faça o robô parar quando toca o com sensor de toque num obstáculo, fazer o som “Uh-oh”, curvar para trás e seguir depois uma trajetória reta até
encontrar um obstáculo de novo.
Solução possível:
Clube de Programação e Eletrónica
15
Lego Ev3 – Exercícios introdutórios
2.2.2. Simular um cachorrinho
Blocos usados: Objetivo:
Criar um programa que faça o robô aproximar-se de alguém quando essa pessoa se afasta, afastar-se quando essa pessoa se
aproxima e parar quando é acionado o sensor de toque (simulando uma festinha). Enquanto está parado, o robô deve ladrar.
Solução possível:
Iniciar
Mover a
direção
Som
Loop
Switch
Clube de Programação e Eletrónica
16
Lego Ev3 – Exercícios introdutórios
2.2.3. Testando a função Bumped
Blocos usados:
Iniciar Mover
a
direção
Mover
tanque
Esperar Loop
Objetivo:
Criar um programa que faça o robô assumir três trajetórias diferentes (neste caso, andar em frente, virar para a direita, virar para a esquerda) cada vez que o botão de
pressão for premido e largado.
Solução possível:

EV3#4: Exercicios com o sensor de toque

  • 1.
    Clube de Programaçãoe Eletrónica 11 Lego Ev3 – Exercícios introdutórios PROJETO LEGO MINDSTORMS EV3 2. O sensor de toque O Sensor de toque O sensor de toque deteta quando o botão que se encontra à superfície do sensor de toque é pressionado. É possível usar este sendor para detetar, por exemplo, quando o robô bate em alguma coisa. Este sensor pode também ser usado para, sendo pressionado pelo dedo do utilizador, induzir uma ação. O sensor de toque tanto indica que está pressionado, como que não está pressionado. Não consegue medir durante quanto tempo está o sensor pressionado ou com quanta força foi feita a pressão. A saída do sensor de toque é uma variável lógica Verdade / Falso (True /False). À posição do sensor de toque chama-se estado do sensor e é Verdade (True) se estiver pressionado, e Falso (False) se não estiver pressionado. O sensor de toque também pode rastrear se o botão foi premido e libertado em ações anteriores. Chama-se a esta função Bumped e é útil para determinar se o sensor tinha sido pressionado num momento anterior ao da ação que está a decorrer. O sensor de toque pode fornecer os seguintes dados: Dados Tipo Notas Estado Lógico Verdade se o botão for premido; de contrário, Falso Premido Lógico Verdade se o botão for premido; de contrário, Falso Libertado Lógico Falso se o botão for premido; de contrário, Verdade Bumped Lógico Verdade se o botão for premido e libertado no passado; para que ocorra um novo Bumped, é necessário que o botão volte a ser premido e libertado de novo
  • 2.
    Clube de Programaçãoe Eletrónica 12 Lego Ev3 – Exercícios introdutórios A função Bumped Para além de detetar se o botão está ou não premido, o sensor de toque também guarda a informação se o sensor já foi, em momentos anteriores, premido e libertado. A esta função chama-se Bumped. Esta função permite usar de forma simples o sensor de toque como um interruptor de pressão. Caso o sensor de toque indique que ocorreu um Bumped, não o voltará a fazer até que o sensor de toque seja de novo pressionado e libertado, o que facilita a realização de um programa que faça corresponder a cada toque uma ação determinada. A tabela seguinte mostra um exemplo onde um sensor de toque é premido e libertado por duas vezes. O programa vai testando o estado da função Bumped ao longo de oito passos. Passo Ação Premido Libertado Bumped 1 O botão inicia sem estar premido Falso Verdade Falso 2 O botão é pressionado Verdade Falso Falso 3 O botão é libertado Falso Verdade Verdade 4 O botão continua sem estar premido e o programa testa o sensor de toque novamente Falso Verdade Falso 5 O botão é premido uma segunda vez Verdade Falso Falso 6 O botão é mantido premido e o programa volta a testar o sensor de toque Verdade Falso Falso 7 O botão é libertado Falso Verdade Verdade 8 O botão continua sem ser pressionado e o programa volta a testar o sensor de toque Falso Verdade Falso Notar que quando o botão é mantido premido, o sensor de toque continuará a indicar Premido cada vez que o programa o testar. No entanto, assim que o botão for libertado, o sensor só indicará Bumped na primeira vez que o programa efetuar o teste ao sensor. Para que volte a ocorrer um Bumped é necessário que se volte a premir e a largar o botão de pressão.
  • 3.
    Clube de Programaçãoe Eletrónica 13 Lego Ev3 – Exercícios introdutórios 2. O bloco de programação do sensor de toque 1. Seleção da porta onde está ligado o sensor (Port seletor) 2. Seleção do modo de funcionamento (Mode selector) 3. Entradas (Inputs) 4. Saídas (Outputs) Parâmetros configuráveis: 1. Seleção do modo de funcionamento: Modo Função Bloco Measure – State Retorna o valor do estado do sensor de toque. O estado será Verdade (True) se o sensor de toque estiver premido; caso contrário, será Falso (False). Compare - State Neste modo, pode escolher-se o qual o estado (State) que se pretende testar no sensor de toque (Liberto – Released, premido – Pressed ou Bumped). O valor de Compare Result será o valor do estado do modo selecionado. O estado do sensor será indicado na saída Measured Value.
  • 4.
    Clube de Programaçãoe Eletrónica 14 Lego Ev3 – Exercícios introdutórios 2.2. Programando com o sensor de toque 2.2.1. Reagir quando o sensor de toque é acionado Blocos usados: Iniciar Mover a direção Esperar Loop Som Objetivo: Criar um programa que faça o robô parar quando toca o com sensor de toque num obstáculo, fazer o som “Uh-oh”, curvar para trás e seguir depois uma trajetória reta até encontrar um obstáculo de novo. Solução possível:
  • 5.
    Clube de Programaçãoe Eletrónica 15 Lego Ev3 – Exercícios introdutórios 2.2.2. Simular um cachorrinho Blocos usados: Objetivo: Criar um programa que faça o robô aproximar-se de alguém quando essa pessoa se afasta, afastar-se quando essa pessoa se aproxima e parar quando é acionado o sensor de toque (simulando uma festinha). Enquanto está parado, o robô deve ladrar. Solução possível: Iniciar Mover a direção Som Loop Switch
  • 6.
    Clube de Programaçãoe Eletrónica 16 Lego Ev3 – Exercícios introdutórios 2.2.3. Testando a função Bumped Blocos usados: Iniciar Mover a direção Mover tanque Esperar Loop Objetivo: Criar um programa que faça o robô assumir três trajetórias diferentes (neste caso, andar em frente, virar para a direita, virar para a esquerda) cada vez que o botão de pressão for premido e largado. Solução possível: