티스토리 뷰
728x90
detect I2C chips
출처 : i2cdetect(8): detect I2C chips - Linux man page
$ ls /dev/*i2c* /dev/i2c-0 /dev/i2c-1 $ i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: 70 -- -- -- -- -- -- --
PCA9685 제어
import java.io.IOException; import java.math.BigDecimal; import com.pi4j.gpio.extension.pca.PCA9685GpioProvider; import com.pi4j.gpio.extension.pca.PCA9685Pin; import com.pi4j.io.gpio.BPIM2PGpioProvider; import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinPwmOutput; import com.pi4j.io.gpio.Pin; import com.pi4j.io.i2c.I2CBus; import com.pi4j.io.i2c.I2CFactory; import com.pi4j.io.i2c.I2CFactory.UnsupportedBusNumberException; public class PCA9685Gpio { public static final int SERVO_DURATION_MIN = 650; public static final int SERVO_DURATION_NEUTRAL = 1500; public static final int SERVO_DURATION_MAX = 2100; private static PCA9685Gpio instance = null; private PCA9685GpioProvider gpioProvider = null; // sudo java -cp .:pi4j-core.jar:pi4j-gpio-extension.jar PCA9685Gpio private PCA9685Gpio() throws IOException, UnsupportedBusNumberException { GpioFactory.setDefaultProvider(new BPIM2PGpioProvider()); System.out.println("<--Pi4J--> PCA9685 PWM Example ... started."); // This would theoretically lead into a resolution of 5 microseconds per // step: // 4096 Steps (12 Bit) // T = 4096 * 0.000005s = 0.02048s // f = 1 / T = 48.828125 BigDecimal frequency = new BigDecimal("48.828"); // Correction factor: actualFreq / targetFreq // e.g. measured actual frequency is: 51.69 Hz // Calculate correction factor: 51.65 / 48.828 = 1.0578 // --> To measure actual frequency set frequency without correction // factor(or set to 1) BigDecimal frequencyCorrectionFactor = new BigDecimal("1.0578"); // Create custom PCA9685 GPIO provider I2CBus bus = I2CFactory.getInstance(I2CBus.BUS_0); gpioProvider = new PCA9685GpioProvider(bus, 0x40, frequency, frequencyCorrectionFactor); // Define outputs in use for this example GpioPinPwmOutput[] myOutputs = provisionPwmOutputs(gpioProvider); // Reset outputs gpioProvider.reset(); } public static PCA9685Gpio getInstance() throws IOException, UnsupportedBusNumberException { if (instance==null) instance = new PCA9685Gpio(); return instance; } public void setPwm(Pin pin, int duration) { gpioProvider.setPwm(pin, duration); } public void shutdown() { gpioProvider.shutdown(); } private static GpioPinPwmOutput[] provisionPwmOutputs(final PCA9685GpioProvider gpioProvider) { GpioController gpio = GpioFactory.getInstance(); GpioPinPwmOutput myOutputs[] = { gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_00, "Pulse 00"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_01, "Pulse 01"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_02, "Pulse 02"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_03, "Pulse 03"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_04, "Pulse 04"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_05, "Pulse 05"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_06, "Pulse 06"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_07, "Pulse 07"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_08, "Pulse 08"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_09, "Pulse 09"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_10, "Always ON"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_11, "Always OFF"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_12, "Servo pulse MIN"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_13, "Servo pulse NEUTRAL"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_14, "Servo pulse MAX"), gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_15, "not used") }; return myOutputs; } public static void main(String[] args) throws Exception { PCA9685Gpio test = PCA9685Gpio.getInstance(); test.setPwm(PCA9685Pin.PWM_01, SERVO_DURATION_NEUTRAL); Thread.sleep(200); for (int i=SERVO_DURATION_MIN; i<=SERVO_DURATION_MAX; i+=30) { test.setPwm(PCA9685Pin.PWM_00, i); Thread.sleep(200); } for (int i=SERVO_DURATION_MAX; i>=(int)(SERVO_DURATION_MIN+(SERVO_DURATION_MAX-SERVO_DURATION_MIN)/2); i-=30) { test.setPwm(PCA9685Pin.PWM_00, i); Thread.sleep(200); } for (int i=SERVO_DURATION_MIN; i<=SERVO_DURATION_MAX; i+=30) { test.setPwm(PCA9685Pin.PWM_01, i); Thread.sleep(200); } for (int i=SERVO_DURATION_MAX-200; i>=(int)(SERVO_DURATION_MIN+(SERVO_DURATION_MAX-SERVO_DURATION_MIN)/2); i-=30) { test.setPwm(PCA9685Pin.PWM_01, i); Thread.sleep(200); } test.shutdown(); } }
실행
$ sudo java -cp .:pi4j-core.jar:pi4j-gpio-extension.jar PCA9685Gpio platformId = raspberrypi / label = Raspberry Pi platformId = bananapi / label = BananaPi platformId = bananapro / label = BananaPro platformId = odroid / label = Odroid platformId = BPI_M2P / label = BPI_M2P piboardRev: Hardware string: Hardware : sun8i Hardware:Hardware : sun8i piboardRev: 3 piboardId: Revision string: Revision : 0000 wiringPi: wiringPiSetup called piboardRev: Hardware string: Hardware : sun8i Hardware:Hardware : sun8i piboardRev: 3 piboardRev: Hardware string: Hardware : sun8i Hardware:Hardware : sun8i piboardRev: 3 piboardId: Revision string: Revision : 0000 wiringPiSetup: wiringPiMode = 0 <--Pi4J--> PCA9685 PWM Example ... started.
실행 결과
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- NDK
- ffmpeg
- BPI-M4
- 튜닝쇼 2008
- sas2009
- Mac
- Xcode
- Delphi Tip
- Delphi
- SAS
- Java
- Spring
- 동경
- koba2010
- android
- JavaScript
- 지스타2007
- 송주경
- ble
- 전예희
- Linux
- oracle
- 일본여행
- Spring MVC
- ubuntu
- 레이싱모델 익스트림 포토 페스티벌
- KOBA
- MySQL
- flex
- 서울오토살롱
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함