Java源码示例:com.pi4j.io.gpio.GpioPinPwmOutput

示例1
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;
}
 
示例2
private GpioPinPwmOutput[] provisionPwmOutputs(final PCA9685GpioProvider gpioProvider) {
    GpioController gpio = GpioFactory.getInstance();
    GpioPinPwmOutput myOutputs[] = {
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_00, "Servo 00"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_01, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_02, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_03, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_04, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_05, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_06, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_07, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_08, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_09, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_10, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_11, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_12, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_13, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_14, "not used"),
            gpio.provisionPwmOutputPin(gpioProvider, PCA9685Pin.PWM_15, "not used")};
    return myOutputs;
}
 
示例3
@Override
public long switchAnalogPin(AnalogPin analogPin, int value)
		throws IOException {
	GpioPinPwmOutput pin = (GpioPinPwmOutput) getOrCreate(
			analogPin.pinNum(), DIGITAL_OUTPUT);
	pin.setMode(PWM_OUTPUT);
	pin.setPwm(value);
	return MessageIdHolders.NO_ID.getId();
}
 
示例4
private boolean sendPowerPinIntensity(MessageParsedInfo messageParsedInfo) {
	int pinNum    = (Integer)messageParsedInfo.getParsedValues()[0];
	int intensity = (Integer)messageParsedInfo.getParsedValues()[1];
			
	GpioPinPwmOutput  pin = (GpioPinPwmOutput )getPin(pinNum);
	pin.setMode(PinMode.PWM_OUTPUT);
	
	pin.setPwm(intensity);
			
	return true;
}
 
示例5
@SuppressWarnings("resource")
public static void main(String args[]) throws Exception {
    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_1);
    final PCA9685GpioProvider gpioProvider = new PCA9685GpioProvider(bus, 0x40, frequency, frequencyCorrectionFactor);
    // Define outputs in use for this example
    GpioPinPwmOutput[] myOutputs = provisionPwmOutputs(gpioProvider);
    // Reset outputs
    gpioProvider.reset();
    //
    // Set various PWM patterns for outputs 0..9
    final int offset = 400;
    final int pulseDuration = 600;
    for (int i = 0; i < 10; i++) {
        Pin pin = PCA9685Pin.ALL[i];
        int onPosition = checkForOverflow(offset * i);
        int offPosition = checkForOverflow(pulseDuration * (i + 1));
        gpioProvider.setPwm(pin, onPosition, offPosition);
    }
    // Set full ON
    gpioProvider.setAlwaysOn(PCA9685Pin.PWM_10);
    // Set full OFF
    gpioProvider.setAlwaysOff(PCA9685Pin.PWM_11);
    // Set 0.9ms pulse (R/C Servo minimum position) 
    gpioProvider.setPwm(PCA9685Pin.PWM_12, SERVO_DURATION_MIN);
    // Set 1.5ms pulse (R/C Servo neutral position) 
    gpioProvider.setPwm(PCA9685Pin.PWM_13, SERVO_DURATION_NEUTRAL);
    // Set 2.1ms pulse (R/C Servo maximum position) 
    gpioProvider.setPwm(PCA9685Pin.PWM_14, SERVO_DURATION_MAX);
    //
    // Show PWM values for outputs 0..14
    for (GpioPinPwmOutput output : myOutputs) {
        int[] onOffValues = gpioProvider.getPwmOnOffValues(output.getPin());
        System.out.println(output.getPin().getName() + " (" + output.getName() + "): ON value [" + onOffValues[0] + "], OFF value [" + onOffValues[1] + "]");
    }
    System.out.println("Press <Enter> to terminate...");
    new Scanner(System.in).nextLine();
}