Pi4J некорректно работает с PI5 в Java проекте
-
Вот скрипт на Python который успешно включает/выключает реле
import RPi.GPIO as GPIO import time channel = 27 GPIO.setmode(GPIO.BCM) GPIO.setup(channel, GPIO.OUT) def motor_on(pin): GPIO.output(pin, GPIO.HIGH) def motor_off(pin): GPIO.output(pin, GPIO.LOW) if __name__ == '__main__': try: motor_on(channel) time.sleep(1) motor_off(channel) time.sleep(1) GPIO.cleanup() except KeyboardInterrupt: GPIO.cleanup()
Вот аналогичный java код, но при его исполнении реле включается и намертво зависает во включенном положении. Невозможно снять сигнал в 27 пина (и любого другого)
import com.pi4j.context.Context; import com.pi4j.Pi4J; import com.pi4j.io.gpio.digital.DigitalOutput; import com.pi4j.io.gpio.digital.DigitalOutputConfig; import com.pi4j.io.gpio.digital.DigitalState; public class Main { public static void main(String[] args) throws InterruptedException { Context pi4j = Pi4J.newAutoContext(); DigitalOutputConfig config = DigitalOutput.newConfigBuilder(pi4j) .id("LED") .name("Simple LED Control") .address(27) .shutdown(DigitalState.LOW) .initial(DigitalState.LOW) .build(); DigitalOutput led = pi4j.create(config); led.state(DigitalState.HIGH); Thread.sleep(1000); led.state(DigitalState.LOW); pi4j.shutdown(); } }
Какие есть соображения на этот счет?
-
@Kvazarrius а модель RasPi какая?
-
@Чёрный-Лукич
Raspberry Pi 5 8GB
Процессор Broadcom BCM2712
ОС стоит ихняя
думал дело в реле - перебрал весь возможный код, в.т.ч. с оффициального сайта Pi4J https://www.pi4j.com/documentation/io-examples/digital-output/
результат один
Потом нашел питоновский скрипт - работает как часы -
@Kvazarrius в Raspberry Pi5 работу с GPIO вынесли с процессора на отдельный чип RP1,
соответственно многие старые GPIO либы, которые работали на 4ке либо отвалились, либо работают некорректноPi4J надо обновить до версии 2.5.0 и должно заработать
-
@Чёрный-Лукич изначально я использовал версию 2.7.0
даунгрейд до 2.6.0, 2.5.0. ожидаемо, не помогimplementation ("com.pi4j:pi4j-core:2.6.0") implementation ("com.pi4j:pi4j-plugin-raspberrypi:2.6.0") implementation ("com.pi4j:pi4j-plugin-gpiod:2.6.0")