3. Leitura dos sensores infravermelhos
Neste capítulo será abordado a parte do código para obter os dados dos sensores IR
3.1 Código em Java
Nesta página será descrito como deve ser feito o código em Java para lermos os dados obtidos pelo sensor infravermelho. Antes de começarmos a programar é importante esclarecer alguns items:
- Estamos considerando que você já saiba como mexer no VS Code WPILib de maneira geral e tenha sua elétrica montada conforme os capítulos anteriores.
- O código é o mesmo para qualquer sensor infravermelho retro reflexivo, ou que tenha um input apenas, como nosso caso.
Código
A primeira etapa que devemos fazer é declarar a nossa entrada do roboRIO que estará fazendo a leitura do sensor. Portanto:
DigitalInput sensorInfravermelho = new DigitalInput(0);
Onde temos o número 0 é o local - parâmetro da função construtora da classe DigitalInput - que deve ser declarado qual porta DIO do roboRIO estamos utilizando, nesse caso, a 0, mas poderia ser a 1, 2, 3...
A segunda parte é a exibição desses valores em uma dashboard, em nosso caso estaremos utilizando a shuffleboard. Para fazer isso apenas faça - dentro de uma função períodica para leituras contínuas:
@Override
public void robotPeriodic()
{
SmartDashboard.putBoolean("Estado do sensor IR", sensorInfravermelho.get());
}
Caso sua leitura esteja invertida, ou seja, quando o sensor não está detectando nenhum objeto ele retorna verdadeiro (nesse caso será representado pelo true na shuffleboard), mas se detectar retorna falso. Para resolver isso apenas precisamos inverter a leitura. Para isso faça como o código abaixo:
@Override
public void robotPeriodic()
{
SmartDashboard.putBoolean("Estado do sensor IR", !sensorInfravermelho.get());
}
Se estiver utilizando o sensor ED30-D80B4 é possível reverter a leitura na própria calibração do sensor, para isso de uma olhada na página 1.3 Calibração do sensor
Exibição na shuffleboard
Quando colocarmos nossa variável de leitura na shuffleboard, será apenas uma caixa de texto, portanto, ela dirá true ou false. Entretanto é possível alterarmos para uma boolean box, a qual indicará pela cor se nosso sensor esta ou não lendo algo. Para fazer isso, clique com o botão direito no elemento da shuffleboard e faça o seguinte:
Caso nosso sensor detecte um objeto essa caixa deverá ficar verde.
Lembrando que se ficar invertido é necessário reverter isso na leitura do código, como descrito mais acima nesta página
3.2 Código em LabView
Antes de começarmos a realizar a leitura dos nosso sensores infravermelhos em LabVIEW é preciso esclarecer dois items:
- Estamos considerando que você já saiba como instalar e mexer no programa LabVIEW para FRC.
- A segunda parte é que estamos considerando que você já tenha o resto da sua elétrica montada, e a única coisa que precisaremos fazer é construir o código no roboRIO.
Código
A primeira etapa que devemos realizar é configurar uma referência para nossa porta de entrada digital, isso é feito em nosso Begin.vi, portanto vamos utilizar um VI de Open para informar a porta DIO que o sensor está conectado, e depois vamos fazer o registro da referência:
Caso queira alterar a porta digital, apenas edite a constante DIO 0.
Para realizarmos a leitura do sensor infravermelho é preciso acessar a referência do sensor declarada anteriormente e obter seu valor por meio de um VI que retorna o valor da porta. Nesse caso estamos colocando seu valor em um indicador. Faremos isso utilizando o seguinte diagrama:
As vezes pode ser necessário reverter a leitura do sensor, pois ele pode detectar um objeto e retornar false, e isso atrapalha na hora da visualização. Portanto, para inverter a leitura faça o seguinte, adicione um not na função get, como segue:
Se estiver utilizando um sensor ED30-D80B4 é possível inverter a leitura no próprio sensor, para isso de uma olhada na página 1.3 Calibração do sensor
Visualização no Painel Frontal
Quando criamos o indicador que armazena o estado do nosso sensor, automáticamente no front panel do LabVIEW é criado um elemento que indica o estado da variável. Da seguinte forma: