benfry / processing4

Processing 4.x releases for Java 17
https://processing.org
Other
1.35k stars 237 forks source link

Unable to interact with the GPIO of Raspberry Pi 5 #807

Open eMUQI opened 12 months ago

eMUQI commented 12 months ago

Description

Unable to interact with the GPIO of Raspberry Pi 5

Expected Behavior

Draw a dot on Processing, which blinks synchronously with the LED. 图片

Current Behavior

error

/sys/class/gpio/export:Invalid argument
GPIO pin 17 does not seem to be available on your platform
RuntimeException: /sys/class/gpio/export: Invalid argument
RuntimeException: /sys/class/gpio/export: Invalid argument

Steps to Reproduce

  1. Install Hardware I/O io
  2. Run the code

    import processing.io.*;
    int ledPin = 17;
    boolean state = true;
    
    void setup() {
       size(100, 100);
       frameRate(2); //set frame rate
       GPIO.pinMode(ledPin, GPIO.OUTPUT); //set the ledPin to output mode
    }
    
    void draw() {
       state = !state;
       if (state==true) {
           GPIO.digitalWrite(ledPin, GPIO.LOW); //led on
           fill(255, 0, 0); //set the fill color of led on
       } else {
           GPIO.digitalWrite(ledPin, GPIO.HIGH); //led off
           fill(155); //set the fill color of led off
       }
       ellipse(width/2, height/2, width*0.75, height*0.75);
    }
  3. error

Your Environment

Other

Also report at https://discourse.processing.org/t/issue-with-gpio-access-on-raspberry-pi-5-using-processing-4/43337

Khushikela29 commented 11 months ago

Hii !! I think the issue is being resolved because the output after running the program is same as expected output

eMUQI commented 10 months ago

Hii !! I think the issue is being resolved because the output after running the program is same as expected output

Hello @Khushikela29, may I ask if you have run the aforementioned program on a Raspberry Pi 5? Today I tried again and still encountered the same error.

falue commented 7 months ago

I have the same issue (identical error messages) even with a rpi4.

I figure it has something to do with the fact that the rpi3 uses the "Sysfs Interface" for GPIO pins (which is phased out for a long time), and the rpi4 onwards "GPIO Character Device Interface". The Hardware I/O library seems to rely on the "Sysfs Interface"?

The folder /sys/class/gpio on the rpi 4 is almost empty, Output of ls -l /sys/class/gpio is:

xxx@raspberrypi:~ $ ls -l /sys/class/gpio
total 0
--w--w---- 1 root gpio 4096 Apr 23 17:04 export
lrwxrwxrwx 1 root gpio    0 Apr 23 17:04 gpiochip512 -> ../../devices/platform/soc/fe200000.gpio/gpio/gpiochip512
lrwxrwxrwx 1 root gpio    0 Apr 23 17:04 gpiochip570 -> ../../devices/platform/soc/soc:firmware/soc:firmware:gpio/gpio/gpiochip570
--w--w---- 1 root gpio 4096 Apr 23 17:04 unexport

Whereas output of the rpi 3 ls -l /sys/class/gpio is:

xxx@raspberrypi:~ $ ls -l /sys/class/gpio
total 0
--w--w---- 1 root gpio 4096 Apr 23 16:43 export
lrwxrwxrwx 1 root root    0 Apr 23 16:43 gpio10 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio10
lrwxrwxrwx 1 root root    0 Apr 23 16:43 gpio11 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio11
lrwxrwxrwx 1 root root    0 Apr 23 16:43 gpio13 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio13
lrwxrwxrwx 1 root root    0 Apr 23 16:43 gpio17 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio17
lrwxrwxrwx 1 root root    0 Apr 23 16:43 gpio19 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio19
lrwxrwxrwx 1 root root    0 Apr 23 16:43 gpio26 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio26
lrwxrwxrwx 1 root root    0 Apr 23 16:43 gpio27 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio27
lrwxrwxrwx 1 root root    0 Apr 23 16:43 gpio5 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio5
lrwxrwxrwx 1 root root    0 Apr 23 16:43 gpio6 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio6
lrwxrwxrwx 1 root root    0 Apr 23 16:43 gpio9 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio9
lrwxrwxrwx 1 root gpio    0 Apr 23 16:43 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 root gpio    0 Apr 23 16:43 gpiochip100 -> ../../devices/gpiochip1/gpio/gpiochip100
lrwxrwxrwx 1 root gpio    0 Apr 23 16:43 gpiochip504 -> ../../devices/platform/soc/soc:firmware/soc:firmware:expgpio/gpio/gpiochip504
--w--w---- 1 root gpio 4096 Apr 23 16:43 unexport

I might be totally off course. Not sure how anyone had used Processing 4 with GPIOs on a rpi4 or even rpi5, though. I might be missing something blatantly obvious to someone of course ;)

JinbaoPeng commented 7 months ago

In the latest systems (bookworm), processing is not available, so try going back to bullseye.