Changed button handler to work with GPIO pins on Rpi

This commit is contained in:
jancoow
2015-05-22 21:45:49 +02:00
parent 35884a2726
commit 3bf8280f79
2 changed files with 74 additions and 37 deletions
+72 -36
View File
@@ -6,10 +6,18 @@ import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalInput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
import com.pi4j.io.gpio.event.GpioPinListenerDigital;
import main.Window;
import control.LedHandler;
public class ButtonHandler implements KeyListener{
public class ButtonHandler{
List<ButtonListener> listeners;
static List<Button> buttons;
@@ -34,6 +42,34 @@ public class ButtonHandler implements KeyListener{
{
b.setColor(new Color((int)(Math.random()*254+1),(int)(Math.random()*254+1),(int)(Math.random()*254+1)));
}
// create gpio controller
ArrayList<GpioPinDigitalInput> inputpins = new ArrayList<GpioPinDigitalInput>();
final GpioController gpio = GpioFactory.getInstance();
inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_02, "1")); //button 1 to 6 + start button
inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_03, "2"));
inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_13, "3"));
inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_14, "4"));
inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_00, "5"));
inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_12, "6"));
inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_06, "0"));
for(GpioPinDigitalInput p:inputpins){
p.addListener(new GpioPinListenerDigital() {
@Override
public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent e) {
if(e.getState() == PinState.HIGH){
buttonPress(buttons.get(Integer.parseInt(e.getPin().getName())));
System.out.println(e.getPin().getName() + " Released");
}else{
buttonRelease(buttons.get(Integer.parseInt(e.getPin().getName())));
System.out.println(e.getPin().getName() + " Pressed");
}
}
});
}
}
public void addButtonListener(ButtonListener toAdd) {
@@ -53,41 +89,41 @@ public class ButtonHandler implements KeyListener{
}
@Override
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode())
{
case KeyEvent.VK_0:
buttonPress(buttons.get(0));
break;
case KeyEvent.VK_1:
buttonPress(buttons.get(1));
break;
case KeyEvent.VK_2:
buttonPress(buttons.get(2));
break;
case KeyEvent.VK_3:
buttonPress(buttons.get(3));
break;
case KeyEvent.VK_4:
buttonPress(buttons.get(4));
break;
case KeyEvent.VK_5:
buttonPress(buttons.get(5));
break;
case KeyEvent.VK_6:
buttonPress(buttons.get(6));
break;
case KeyEvent.VK_ESCAPE:
if(!Window.ON_RASP)
System.exit(0);
break;
}
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
// @Override
// public void keyPressed(KeyEvent e) {
// switch(e.getKeyCode())
// {
// case KeyEvent.VK_0:
// buttonPress(buttons.get(0));
// break;
// case KeyEvent.VK_1:
// buttonPress(buttons.get(1));
// break;
// case KeyEvent.VK_2:
// buttonPress(buttons.get(2));
// break;
// case KeyEvent.VK_3:
// buttonPress(buttons.get(3));
// break;
// case KeyEvent.VK_4:
// buttonPress(buttons.get(4));
// break;
// case KeyEvent.VK_5:
// buttonPress(buttons.get(5));
// break;
// case KeyEvent.VK_6:
// buttonPress(buttons.get(6));
// break;
// case KeyEvent.VK_ESCAPE:
// if(!Window.ON_RASP)
// System.exit(0);
// break;
// }
// }
//
// public void keyReleased(KeyEvent arg0) {}
// public void keyTyped(KeyEvent arg0) {}
//
public static List<Button> getButtons()
{
return buttons;
+2 -1
View File
@@ -7,6 +7,7 @@ import javax.swing.JFrame;
import model.GameModel;
import view.GameView;
import control.GPIOListener;
import control.GameControl;
import control.LedHandler;
import control.button.ButtonHandler;
@@ -55,7 +56,7 @@ public class Window extends JFrame {
setContentPane(view);
//Create EventListeners
addKeyListener(bth);
new GPIOListener();
addKeyListener(jsh);
bth.addButtonListener(control);
jsh.addJoystickListener(control);