gpt4 book ai didi

java - 在 Raspberry PI 2 上使用 java 和 Pi4J 控制伺服系统时出现问题

转载 作者:行者123 更新时间:2023-12-03 07:13:48 24 4
gpt4 key购买 nike

我想控制一个MG90S Servo使用 Pi4J 通过 Raspberry PI 的 GPIO 引脚。

我创建了一个具有赫兹和占空比(“高毫秒:”)键盘输入的 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:通过以下输入,我预计伺服器处于 旋转。

赫兹:50高毫秒数:1

结果: Helm 机处于预期的位置。

示例 2:通过以下输入,我预计伺服器处于 180° 旋转。

赫兹:50高毫秒:2

结果: Helm 机处于~80°旋转位置。

有人知道我做错了什么吗?

最佳答案

我对另一个伺服系统也有类似的问题(我认为这是arduino的东西)。

我只是校准了给定的值,结果是正确的。我不知道它从哪里来,但伺服器做了我想做的事。

关于java - 在 Raspberry PI 2 上使用 java 和 Pi4J 控制伺服系统时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31057123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com