一、光敏电阻的接法
我这里使用到的光敏电阻就是我们最常见的光敏电阻模块
你手里如果有光敏电阻,估计也和我的差不多,如果你是用的是红外光敏,用法也应该是大同小异。
光敏电阻模块有三个引脚,分别是VCC、GND和DQ,其工作电压应为3.3V-5V,所以在树莓派上接3.3和接5V都是正确的,接法如下:
光敏电阻 | 树莓派 |
---|---|
VCC | 5V |
GND | Ground |
DQ | GPIO_0 |
PS:有关小灯的接法,昨天已经上过图了,这次我将小灯接在了GPIO_1上面,利用光敏读取数值控制小灯亮灭。
二、编写程序
这里依然使用pi4j库来写这个程序。
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPin;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.GpioPinDigitalInput;
import com.pi4j.io.gpio.PinDirection;
import com.pi4j.io.gpio.PinMode;
import com.pi4j.io.gpio.PinPullResistance;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
public class GuangMin{
public static void main(String[] args) throws InterruptedException {
final GpioController gpio=GpioFactory.getInstance();
final GpioPinDigitalInput pin=gpio.provisionDigitalInputPin(RaspiPin.GPIO_00, "photo-resistor", PinPullResistance.PULL_DOWN);
final GpioPinDigitalOutput led=gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "led", PinState.LOW);
//Read Pin State
while(true){
PinState photoResistorState = pin.getState();
//System.out.println("photo resistor's reader is "+photoResistorState.getValue());
if(photoResistorState.isHigh()){
led.high();
}else{
led.low();
}
}
}
}
使用如下命令编译:
javac -classpath .:classes:/opt/pi4j/lib/'*' -d . GuangMin.java
使用如下命令运行程序:
sudo java -classpath .:classes:/opt/pi4j/lib/'*' GuangMin