pulsador - Problema LED parpadeante de Raspberry pi-Python vs Java
python raspberry (2)
Estoy tratando de hacer un flash de luz LED en la raspberry pi usando algún código que encontré en línea (lo sé, no el mejor, pero era un sitio de tutorial)
Cuando ejecuto el siguiente código python, la luz LED parpadea;
import RPi.GPIO as GPIO
import time
pinNum = 4
GPIO.setmode(GPIO.BCM) #numbering scheme that corresponds to breakout board and pin layout
GPIO.setup(pinNum,GPIO.OUT) #replace pinNum with whatever pin you used, this sets up that pin as an output
#set LED to flash forever
while True:
GPIO.output(pinNum,GPIO.HIGH)
time.sleep(0.5)
GPIO.output(pinNum,GPIO.LOW)
time.sleep(0.5)
Cuando ejecuto el siguiente código Java, que se supone que hace lo mismo, todo lo que consigo son las instrucciones de impresión que he agregado, sin luz intermitente.
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 ControlGpioExample {
public static void main(String[] args) throws InterruptedException {
final GpioController gpio = GpioFactory.getInstance();
final GpioPinDigitalOutput ledPin = gpio.provisionDigitalOutputPin(RaspiPin
.GPIO_04, "MyLED", PinState.LOW);
System.out.println("Started");
try
{
while(true)
{
System.out.println(ledPin==null);
System.out.println("Looping pin now");
ledPin.high();
System.out.println("Set high called");
Thread.sleep(2000);
ledPin.low();
System.out.println("Set low called");
Thread.sleep(2000);
}
}
catch(Exception ex)
{
gpio.shutdown();
ex.printStackTrace();
}
}
}
¿Alguien sabe por qué esto podría ser? Creo lógicamente que debería estar haciendo lo mismo: ambos están usando el mismo número de pin GPIO del pi también
Gracias por tu ayuda
Creo que sus números PIN podrían estar desactivados. Como el código Java no arroja excepciones, consideraría probable que uno de los pines esté activado, pero que tenga un índice diferente al que está conectado su LED.
La documentación de Pi4J enumera esta tabla para la referencia del número pin: https://projects.drogon.net/raspberry-pi/wiringpi/pins/
Su código python utiliza el modo de índice BCM, cuyas asignaciones de puertos se enumeran en la tabla. En este caso, el puerto 4 de BCM se asigna a GPIO_7 en Pi4j en lugar de GPIO_4 que usa en su código de Java.
El GPIO_4 en el código Python GPIO corresponde a este diagrama
El pi4j corresponde al diagrama a continuación
¡Entonces GPIO_04 está en una ubicación completamente diferente! Debes cambiar el código java para usar GPIO_07
Aquí hay una explicación de por qué Wiringpi tiene diferentes nombres para los pines. Es muy confuso que ambos estén usando GPIO_XX