Вот скрипт на 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();
}
}
Какие есть соображения на этот счет?