【问题标题】:Read value of a pin on raspberry pi in java在java中读取树莓派上pin的值
【发布时间】:2014-08-12 10:55:22
【问题描述】:

我现在在做一个项目,我需要在java中读取树莓派上pin的值。

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

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

我一直在看 pi4j 网站,使用那里的例子,但我发现的唯一一件事就是监听一个事件。(这离我想要的并不远,但我没有成功适应我的案例)。

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

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

【问题讨论】:

  • 我的猜测是您可以使用 LDR(光依赖电阻器),您需要将其读取为模拟引脚(10 位值 0-1023)。如果您只是简单地更换 LED,也许您可​​以路由 LDR 的模拟引脚值并将其按比例缩小(将其重新映射为 0-255 的 8 位值)并将其插入 PWM 引脚以相应地调暗 LED。我看到pi4j 已经有一个不错的 GPIO API 供您使用。如果你想要一个开/关开关,你可以使用阈值条件(比如光传感器值小于全亮度的 1/4)来打开你的 LED 标志

标签: java raspberry-pi raspbian


【解决方案1】:

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

它不是很“干净”,但它确实有效。如果对其他人有帮助,我将其发布在这里。 最后很容易......我希望它会有所帮助。

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");
}
}

}

【讨论】:

    【解决方案2】:

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

    Check any tutorial

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

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

    【讨论】:

    • 感谢您的关注。你给我的链接是用 python 写的,我想用 Java 写。
    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2016-02-13
    • 2017-10-24
    • 2015-03-31
    • 2021-08-26
    • 1970-01-01
    • 2012-12-04
    相关资源
    最近更新 更多