#include // Needs to be the modified version const byte ROWS = 19; 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 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; const int id = 1; /* 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 getKey time, but if a unsigned byte could be used here it would remove the need for the correction? */ char keys[COLS][ROWS] = { { 1, 9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97, 105, 113, 121, 129, 137, 145 } , { 2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98, 106, 114, 122, 130, 138, 146 } , { 3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99, 107, 115, 123, 131, 139, 147 } , { 4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124, 132, 140, 148 } , { 5, 13, 21, 29, 37, 45, 53, 61, 69, 77, 85, 93, 101, 109, 117, 125, 133, 141, 149 } , { 6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94, 102, 110, 118, 126, 134, 142, 150 } , { 7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95, 103, 111, 119, 127, 135, 143, 151 } , { 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152 } }; byte colPins[COLS] = { 9, 8, 7, 6, 5, 4, 3, 2}; byte rowPins[ROWS] = { 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42}; /* Becuase of the diodes being fitted the WRONG WAY ROUND, the columns are rows and the rows are columns, have fun! */ // ROW COL ROWS COLS Keypad keypad = Keypad( makeKeymap(keys), colPins, rowPins, COLS, ROWS); void setup(){ Serial.begin(9600); Serial.println("Go"); // Provide ground and power by using the analog inputs as normal // digital pins. This makes it possible to directly connect the // breakout board to the Arduino. If you use the normal 5V and // 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 */ boolean runSerialTest() { Serial.println("Begining Serial Test"); delay(10); byte sByte, cByte; for (int i=0; i<10000; i++) { sByte = Serial.read(); if (sByte != cByte && i != 0) return false; sByte = ((sByte * 10) % 127); Serial.write(sByte); cByte = ((sByte * 10) % 127); // The next expected byte } return true; } void loop(){ //if (Serial.peek() == 0x49) { Serial.write(37); //Serial.write(Serial.read()); /*if (Serial.read() == 0x44) { Serial.write(id); }*/ //} else { // Serial.write(1); //Serial.write(Serial.read()); //} /*char customKey = keypad.getKey(); int customKeyInt = customKey; if (customKeyInt < 0) customKeyInt += 256; if (customKey != NO_KEY){ Serial.println(customKeyInt); } // print the sensor values: Serial.print(analogRead(xpin)); // print a tab between values: Serial.print("\t"); Serial.print(analogRead(ypin)); // print a tab between values: Serial.print("\t"); Serial.print(analogRead(zpin)); Serial.println(); // delay before next reading: //delay(10);*/ }