簡體   English   中英

在Raspberry PI 2上用java和Pi4J控制伺服的問題

[英]Problems with controlling a servo with java and Pi4J on a Raspberry PI 2

我想使用Pi4J通過我的Raspberry PI的GPIO引腳控制MG90S伺服

我創建了一個帶有hz和占空比(“High in ms:”)鍵盤輸入的Java應用程序。

import java.util.Scanner;

import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;

public class Main {
    public static void main(String[] args) throws InterruptedException {
        GpioController gpioFactory = GpioFactory.getInstance();
        GpioPinDigitalOutput myServo =  gpioFactory.provisionDigitalOutputPin(
                    RaspiPin.GPIO_07, PinState.LOW);

        //Input of hz and duty cycle
        System.out.println("Hz:");
        Scanner scanner = new Scanner(System.in);
        float hz = scanner.nextFloat();
        System.out.println("High in ms:");
        float highTime = scanner.nextFloat();
        scanner.close();

        //Calculate GPIO low time: hz period time - duty time
        float lowTime = 1000 / hz - highTime;

        while (true) {
            myServo.high();
            long upMs = new Float(highTime).longValue(); // Up time miliseconds
            int upNanos = new Float(highTime * 1000000 % 1000000).intValue(); // Up time nanoseconds
            java.lang.Thread.sleep(upMs, upNanos);

            myServo.low();
            long lowMs = new Float(lowTime).longValue();
            int lowNanos = new Float(lowTime * 1000000 % 1000000).intValue();

            java.lang.Thread.sleep(lowMs, lowNanos);

        }
    }
}

示例1:通過以下輸入,我希望伺服處於旋轉。

hz:50 ms高:1

結果:伺服正如預期的那樣處於

示例2:通過以下輸入,我希望伺服處於180°旋轉。

hz:50英里高:2

結果:伺服旋轉~80°

有誰知道我做錯了什么?

我有另一個伺服的類似問題(我認為這是arduino的東西)。

我只是按照結果正確的方式校准了給定的值。 我不知道它來自哪里,但伺服做了我想做的事。

這個問題與Pi4J無關。 睡眠期並不准確。

“睡眠的粒度通常受線程調度程序的中斷周期的限制。在Linux中,這個中斷周期在最近的內核中通常為1ms。在Windows中,調度程序的中斷周期通常在10或15毫秒左右” - qwerty https:// stackoverflow的.com /一個/5049836分之11498647

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM