74HC595是一個IC晶片,使用三個針腳就可以控制8Bit訊號輸出,最大支援到15顆晶片串接,詳細介紹可以參考IO 擴充應用 – 使用 74HC595 (三態輸出八位元移位暫存器 IC)。
WiringPi是一個raspberry pi很常見的GPIO控制程式庫,可經由GPIO針腳來控制設備及零件,此程式庫是由C語言撰寫而已,Java要使用則需要使用JNI來與程式庫做互動。
目前Java有一套Pi4J程式庫可以直接與WiringPi做互動來控制GPIO。更詳細的介紹可以參考Java Embedded(1)從 Raspberry Pi 開始會有一整申相關教學。
這裡是一個範例,利用三個GPIO針腳來控制8個LED燈。
程式範例
我使用的針腳
SHCP=>GPIO 25
STCP=>GPIO24
DS=>GPIO23
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package mygpio; import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinDigitalInput; import com.pi4j.io.gpio.GpioPinDigitalOutput; import com.pi4j.io.gpio.PinPullResistance; import com.pi4j.io.gpio.PinState; import com.pi4j.io.gpio.RaspiPin; /** * * @author Eric */ public class IC74HC595 { public static void main(String args[]) { final GpioController gpio = GpioFactory.getInstance(); System.out.println("start IC"); // 建立控制GPIO_01輸入的物件,紅外線測距模組的輸出針腳 final GpioPinDigitalOutput ds = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_23, PinState.LOW); final GpioPinDigitalOutput stcp = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_24, PinState.LOW); final GpioPinDigitalOutput shcp = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_25, PinState.LOW); System.out.println("init "); int delayTime = 500; //while(true) { for (int i = 0; i < 256; i++) { stcp.setState(PinState.LOW); //System.out.println((byte)(i>> 8)+";"+(((byte)i))+";"+i); //if(i>256) //com.pi4j.wiringpi.Shift.shiftOut((byte)ds.getPin().getAddress(), (byte)shcp.getPin().getAddress(), (byte)com.pi4j.wiringpi.Shift.MSBFIRST, (byte)(i>> 8)); com.pi4j.wiringpi.Shift.shiftOut((byte) ds.getPin().getAddress(), (byte) shcp.getPin().getAddress(), (byte) com.pi4j.wiringpi.Shift.MSBFIRST, (byte) i); stcp.setState(PinState.HIGH); delay(delayTime); } } } private static void delay(int ms) { try { Thread.sleep(ms); } catch (InterruptedException e) { System.out.println(e.toString()); } } }
API參考資料
參考資料