我正在尝试从 Web 界面控制伺服电机。我正在使用SpringBoot 2.0、ServoBlaster和pi4j。
为了启动我以 root 身份运行的应用程序./gradlew bootrun --no-daemon
。它必须是 root 才能处理 GPIO,我对设备没有任何安全担忧。
在简化的(只有main
函数的类)Java/Kotlin 中,我实现了通过以下任何一种方式控制伺服:
RPIServoBlasterProvider
val servoProvider = RPIServoBlasterProvider() val servo0 = servoProvider.getServoDriver(servoProvider.definedServoPins[5]) println("Go to 150") //middle servo0.servoPulseWidth = 150 println("Went to ${servo0.servoPulseWidth}") Thread.sleep(1550)
写给
/dev/servoblaster
val out = PrintWriter(FileOutputStream("/dev/servoblaster"), true) println("Go to 65 again") out.println("5=65") out.flush() out.close
调用写入到的辅助脚本
/dev/servoblaster
val servoId = 5 val script = "/home/pi/ServoHardwareSteering.sh" val cmdMinPosition = "$script $servoId 65" val cmdMidPosition = "$script $servoId 150" val cmdMaxPosition = "$script $servoId 235" val runtime = Runtime.getRuntime() println(cmdMidPosition) runtime.exec(cmdMidPosition)//.waitFor() Thread.sleep(1550)
将值写入文件并进行次要执行读取此文件并将此值应用于伺服
我已经尝试了以上所有方法,Springboot
但没有成功。
所以问题是,有人能告诉我我怎么能:
- 使用
RPIServoBlasterProvider
来自的类Springboot
?或者 - 写信给
/dev/servoblaster
?或者 - 执行任何终端脚本?或者
- 在哪里保存脚本以便能够调用它或
- 写入一个简单的文件(例如 afile.txt)? 或者
- 以一种我还没有考虑过的更好的方式解决这个问题。
上述任何问题的解决方案都可以帮助我解决我的问题。
PS:stackoverflow中源代码的blockquote有什么问题吗?我无法将其格式化为一个块,我使用了行代码格式化!