diff options
-rwxr-xr-x | Arduino/ButtonMatrix/ButtonMatrix.pde | 14 | ||||
-rw-r--r-- | PunchingBag/src/Arduino.java | 11 | ||||
-rw-r--r-- | PunchingBag/src/PunchingBag.java | 58 |
3 files changed, 58 insertions, 25 deletions
diff --git a/Arduino/ButtonMatrix/ButtonMatrix.pde b/Arduino/ButtonMatrix/ButtonMatrix.pde index 1ed494c..41ae6ab 100755 --- a/Arduino/ButtonMatrix/ButtonMatrix.pde +++ b/Arduino/ButtonMatrix/ButtonMatrix.pde @@ -1,8 +1,7 @@ - #include <Keypad.h> // Needs to be the modified version +#include <Keypad.h> // Needs to be the modified version const byte ROWS = 19; -const byte COLS = 8; - +const byte COLS = 8; // these constants describe the pins for the acellarometer . They won't change: const int groundpin = 18; // analog input pin 4 -- ground @@ -10,6 +9,7 @@ const int powerpin = 19; // analog input pin 5 -- voltage const int xpin = A3; // x-axis of the accelerometer const int ypin = A2; // y-axis const int zpin = A1; // z-axis (only on 3-axis models) +const int selfTest = A0; /* Each of the buttons can be refered to by a number At the moment the byte overflow for the 127+ numbers is dealt with at the @@ -38,7 +38,7 @@ byte rowPins[ROWS] = {14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 26, 28, 30, 32, 34 Keypad keypad = Keypad( makeKeymap(keys), colPins, rowPins, COLS, ROWS); void setup(){ - Serial.begin(115200); + Serial.begin(9600); Serial.println("Go"); // Provide ground and power by using the analog inputs as normal @@ -47,8 +47,10 @@ void setup(){ // GND pins on the Arduino, you can remove these lines. pinMode(groundpin, OUTPUT); pinMode(powerpin, OUTPUT); + //pinMode(selfTest, OUTPUT); digitalWrite(groundpin, LOW); digitalWrite(powerpin, HIGH); + //digitalWrite(selfTest, HIGH); } /* Send numbers back and forth to test the integrity of the serial communication Computer sends the first byte @@ -80,10 +82,10 @@ void loop(){ // print a tab between values: Serial.print("\t"); Serial.print(analogRead(ypin)); - // print a tab between values: + // print a tab between values: Serial.print("\t"); Serial.print(analogRead(zpin)); Serial.println(); // delay before next reading: - delay(100); + delay(10); } diff --git a/PunchingBag/src/Arduino.java b/PunchingBag/src/Arduino.java index f76bcf6..12df25f 100644 --- a/PunchingBag/src/Arduino.java +++ b/PunchingBag/src/Arduino.java @@ -179,5 +179,16 @@ public class Arduino implements Runnable { }
+ public void write(byte[] bytes) throws IOException {
+ out.write(bytes);
+ }
+
+ public void write(byte b) throws IOException {
+ out.write(b);
+ }
+
+ public int read() throws IOException {
+ return in.read();
+ }
}
diff --git a/PunchingBag/src/PunchingBag.java b/PunchingBag/src/PunchingBag.java index bcaf220..00be6e0 100644 --- a/PunchingBag/src/PunchingBag.java +++ b/PunchingBag/src/PunchingBag.java @@ -1,6 +1,9 @@ import javax.swing.event.EventListenerList; import java.awt.geom.Area; + +import java.io.IOException; + import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; @@ -20,8 +23,9 @@ public class PunchingBag implements Runnable { boolean buttonsChanged = false; private ArrayList<Effect> runningEffects = new ArrayList<Effect>(); - - ButtonArduino buttonArduino = new ButtonArduino(); + + Arduino buttonArduino = new Arduino(); + Arduino ledArduino = new Arduino(); public enum Colour { None, Red, Yellow, Green @@ -36,7 +40,6 @@ public class PunchingBag implements Runnable { private EventListenerList ledListenerList = new EventListenerList(); private EventListenerList accelListenerList = new EventListenerList(); - public PunchingBag() { new Thread(this).start(); } @@ -54,7 +57,7 @@ public class PunchingBag implements Runnable { public void addLEDChangeListener(LEDListener l) { ledListenerList.add(LEDListener.class, l); } - + public void addLEDChangeListener(AccelListener l) { accelListenerList.add(AccelListener.class, l); } @@ -216,21 +219,16 @@ public class PunchingBag implements Runnable { } } } - int x = 7; - // TODO: Complete and test, or rethink the following? - for (int startY = 0; startY <= 4; startY++) { - for (int y = 0; y <= 3; y++) { - if (leds[x][startY + (y * 4)] == Colour.Red - || leds[x][startY + (y * 4)] == Colour.Yellow) { - rawLeds[(5 * 8) + startY] = (byte) (rawLeds[(int) Math - .floor(y / 4)] | (1 << (7 - x))); - } - if (leds[x][y] == Colour.Green || leds[x][y] == Colour.Yellow) { - rawLeds[(int) Math.floor(y / 4)] = (byte) (rawLeds[(int) Math - .floor(y / 4)] | (1 << (7 - x))); - } - } - } + /* + * int x = 7; // TODO: Complete and test, or rethink the following? for + * (int startY = 0; startY <= 4; startY++) { for (int y = 0; y <= 3; + * y++) { if (leds[x][startY + (y * 4)] == Colour.Red || leds[x][startY + * + (y * 4)] == Colour.Yellow) { rawLeds[(5 * 8) + startY] = (byte) + * (rawLeds[(int) Math .floor(y / 4)] | (1 << (7 - x))); } if + * (leds[x][y] == Colour.Green || leds[x][y] == Colour.Yellow) { + * rawLeds[(int) Math.floor(y / 4)] = (byte) (rawLeds[(int) Math + * .floor(y / 4)] | (1 << (7 - x))); } } } + */ } /* Clears the led grid and stops all running effects */ @@ -279,6 +277,28 @@ public class PunchingBag implements Runnable { } } + try { + ledArduino.write(((byte) 108)); + ledArduino.write(((byte) 101)); + ledArduino.write(rawLeds); + } catch (IOException e1) { + e1.printStackTrace(); + } + + try { + while (true) { + int value = ledArduino.read(); + if (value != -1) { + System.out.print(ledArduino.read()); + } else { + break; + } + } + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + if (ledsChanged) { LEDListener[] LEDListeners = ledListenerList .getListeners(LEDListener.class); |