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