在java中读取覆盆子pi上的引脚值

时间:2014-08-12 10:55:23

标签: java raspberry-pi raspbian

我现在正在研究一个项目,我需要在java中读取raspberry pi上的pin的值。

我使用光传感器。根据它的价值,当它是白天,我什么也不做,如果是晚上,我需要打开一些LED。

我已经知道如何打开或关闭LED,因为引脚设置为输出,但我真的不知道如何从引脚读取值(设置为输入)。

我一直在寻找pi4j网站,使用这些例子,但我发现的唯一一件事是听一个事件。(这与我想要的并不相符,但我没有成功地将它改编为我的情况)。

我想恢复此引脚的值(高或低),以便能够比较它(如果状态==高,打开LED,否则什么都不做)。

感谢您的关注,如果您需要任何进一步的信息,请随时告诉我。

2 个答案:

答案 0 :(得分:0)

我终于找到了一种方法来做我想做的事。

它不是很干净",但它有效。我在这里发布它,如果它可以帮助其他人。 最后这很容易......我希望它会有所帮助。

import com.pi4j.io.*;
import com.pi4j.wiringpi.Gpio;
import com.pi4j.wiringpi.GpioUtil;

public class Test {

public static void main(String args[]) throws InterruptedException {

// create gpio controller
final GpioController gpio = GpioFactory.getInstance();

Gpio.pinMode (3, Gpio.INPUT) ;          

if (Gpio.digitalRead(3) == 0){ // it is day, so doesn't need LEDs
      System.out.println("Day, LEDs are not switched on");
}else{ // it is night, LEDs are needed
      System.out.println("Night, LEDs are switched on");
}
}

}

答案 1 :(得分:-1)

我认为从引脚读取值应该很容易实现。

Check any tutorial

检查RaspPi的规范,该规范描述了什么状态deasit计为HIGH。调整电气设置,在触发值上为该引脚提供足够的电压。所以基本上你必须缩放光敏仪表的输出电压,以匹配该引脚认为高电压的高电压。

或者您可以使用任何可用于Rpi的ADC电路,将模拟信号转换为数字信号。