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 a o número 0 é o local - parâmetro da função construtora da classe DigitalInput - onde 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());
}
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