[New] Added GpioBridgeTest which uses 3 buttons and 6 leds.

This commit is contained in:
Robert von Burg 2016-02-05 16:41:11 +01:00
parent 82b5390e09
commit 4d5a58f8e5
1 changed files with 48 additions and 13 deletions

View File

@ -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");