[New] Added GpioBridgeTest which uses 3 buttons and 6 leds.
This commit is contained in:
parent
82b5390e09
commit
4d5a58f8e5
|
@ -27,17 +27,20 @@ public class GpioBridgeTest {
|
|||
|
||||
GpioBridge gpioBridge = new GpioBridge();
|
||||
|
||||
redBtn = gpioBridge.getGpio(Pin.P9_11, Direction.IN).setLabel("Red");
|
||||
blueBtn = gpioBridge.getGpio(Pin.P9_12, Direction.IN).setLabel("Blue");
|
||||
greenBtn = gpioBridge.getGpio(Pin.P9_13, Direction.IN).setLabel("Green");
|
||||
System.out.println("Preparing pins...");
|
||||
greenBtn = gpioBridge.getGpio(Pin.P8_07, Direction.IN).setLabel("Green");
|
||||
blueBtn = gpioBridge.getGpio(Pin.P8_08, Direction.IN).setLabel("Blue");
|
||||
redBtn = gpioBridge.getGpio(Pin.P8_09, Direction.IN).setLabel("Red");
|
||||
|
||||
green0 = gpioBridge.getGpio(Pin.P9_14, Direction.OUT).setLabel("green0");
|
||||
yellow0 = gpioBridge.getGpio(Pin.P9_15, Direction.OUT).setLabel("yellow0");
|
||||
yellow1 = gpioBridge.getGpio(Pin.P9_16, Direction.OUT).setLabel("yellow1");
|
||||
yellow2 = gpioBridge.getGpio(Pin.P9_17, Direction.OUT).setLabel("yellow2");
|
||||
green1 = gpioBridge.getGpio(Pin.P9_18, Direction.OUT).setLabel("green1");
|
||||
red0 = gpioBridge.getGpio(Pin.P9_21, Direction.OUT).setLabel("red0");
|
||||
green0 = gpioBridge.getGpio(Pin.P8_10, Direction.OUT).setLabel("green0");
|
||||
yellow0 = gpioBridge.getGpio(Pin.P8_11, Direction.OUT).setLabel("yellow0");
|
||||
yellow1 = gpioBridge.getGpio(Pin.P8_12, Direction.OUT).setLabel("yellow1");
|
||||
yellow2 = gpioBridge.getGpio(Pin.P8_14, Direction.OUT).setLabel("yellow2");
|
||||
green1 = gpioBridge.getGpio(Pin.P8_15, Direction.OUT).setLabel("green1");
|
||||
red0 = gpioBridge.getGpio(Pin.P8_16, Direction.OUT).setLabel("red0");
|
||||
System.out.println("Prepared pins.");
|
||||
|
||||
System.out.println("Registering listeners...");
|
||||
GpioSignalListener btnListener = (g) -> {
|
||||
if (g.getSignal().isHigh())
|
||||
System.out.println("User pressed " + g.getLabel() + " button.");
|
||||
|
@ -51,11 +54,32 @@ public class GpioBridgeTest {
|
|||
gpioBridge.register(greenBtn, g -> startWork(gpioBridge));
|
||||
gpioBridge.register(blueBtn, g -> stopWork(blueBtn, gpioBridge));
|
||||
gpioBridge.register(redBtn, g -> stopWork(redBtn, gpioBridge));
|
||||
System.out.println("Registered listeners.");
|
||||
|
||||
resetLeds(gpioBridge);
|
||||
|
||||
gpioBridge.start();
|
||||
}
|
||||
|
||||
private static void startWork(GpioBridge gpioBridge) {
|
||||
private static void resetLeds(GpioBridge gpioBridge) throws GpioException {
|
||||
System.out.println("Resetting leds...");
|
||||
gpioBridge.writeValue(green0, Signal.LOW);
|
||||
gpioBridge.writeValue(yellow0, Signal.LOW);
|
||||
gpioBridge.writeValue(yellow1, Signal.LOW);
|
||||
gpioBridge.writeValue(yellow2, Signal.LOW);
|
||||
gpioBridge.writeValue(green1, Signal.LOW);
|
||||
gpioBridge.writeValue(red0, Signal.LOW);
|
||||
}
|
||||
|
||||
private static void startWork(GpioBridge gpioBridge) throws GpioException {
|
||||
|
||||
if (doWork) {
|
||||
System.out.println("Work already running!");
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.println("Starting work...");
|
||||
resetLeds(gpioBridge);
|
||||
|
||||
doWork = true;
|
||||
|
||||
|
@ -66,19 +90,26 @@ public class GpioBridgeTest {
|
|||
gpioBridge.writeValue(green0, Signal.HIGH);
|
||||
|
||||
while (doWork) {
|
||||
gpioBridge.writeValue(yellow0, yellow0.getSignal().getOpposite());
|
||||
gpioBridge.writeValue(yellow2, Signal.LOW);
|
||||
gpioBridge.writeValue(yellow0, Signal.HIGH);
|
||||
Thread.sleep(250L);
|
||||
if (!doWork)
|
||||
break;
|
||||
gpioBridge.writeValue(yellow1, yellow1.getSignal().getOpposite());
|
||||
gpioBridge.writeValue(yellow0, Signal.LOW);
|
||||
gpioBridge.writeValue(yellow1, Signal.HIGH);
|
||||
Thread.sleep(250L);
|
||||
if (!doWork)
|
||||
break;
|
||||
gpioBridge.writeValue(yellow2, yellow2.getSignal().getOpposite());
|
||||
gpioBridge.writeValue(yellow1, Signal.LOW);
|
||||
gpioBridge.writeValue(yellow2, Signal.HIGH);
|
||||
Thread.sleep(250L);
|
||||
}
|
||||
|
||||
gpioBridge.writeValue(green0, Signal.LOW);
|
||||
gpioBridge.writeValue(yellow0, Signal.LOW);
|
||||
gpioBridge.writeValue(yellow1, Signal.LOW);
|
||||
gpioBridge.writeValue(yellow2, Signal.LOW);
|
||||
|
||||
if (workBtnPressed == null) {
|
||||
System.out.println("Uh-oh, no workBtnPressed set! Something is bad!");
|
||||
gpioBridge.writeValue(green1, Signal.HIGH);
|
||||
|
@ -86,13 +117,17 @@ public class GpioBridgeTest {
|
|||
} else if (workBtnPressed == blueBtn) {
|
||||
System.out.println("Work completed successfully!");
|
||||
gpioBridge.writeValue(green1, Signal.HIGH);
|
||||
gpioBridge.writeValue(red0, Signal.LOW);
|
||||
} else {
|
||||
System.out.println("Work failed!");
|
||||
gpioBridge.writeValue(red0, Signal.HIGH);
|
||||
gpioBridge.writeValue(green1, Signal.LOW);
|
||||
}
|
||||
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException("Failed to do work.", e);
|
||||
} catch (GpioException e) {
|
||||
throw new RuntimeException("Failed to work GPIOs", e);
|
||||
}
|
||||
}
|
||||
}, "work");
|
Loading…
Reference in New Issue