So far, here is the ADK program. Originally it was a simple debounce program that turned LEDs on/off. At the moment it issues a Serial.write command when a given button is pressed. It is worth pointing out one of the buttons is a N.O. SPST switch while the other is a N.C. SPST switch and thus, the program is written to accommodate this feature (which I cannot change).
/* Arduino ADK run-time program
* Author: omitted
* Last Mod: 3/2/12
*
*/
const int pedalL = 6; // pin PE4, left pedal
const int pedalR = 7; // pin PE5, right pedal
const int outPinL = 1; // will become TX2, currently PL0
const int outPinR = 1; // currently PL1
int debounce = 20; // number of ms to wait for debounce
int readStatusL;
int readStatusR;
void setup()
{
Serial.begin(115200);
delay(2000);// Give reader a chance to see the output
pinMode(pedalL, INPUT);
digitalWrite(pedalL, HIGH); // Rpu on
pinMode(pedalR, INPUT);
digitalWrite(pedalR, HIGH); // Rpu on
//pinMode(outPinL, OUTPUT);
//pinMode(outPinR, OUTPUT);
delay(2000);
}
void loop()
{
//Serial.println(1);
readStatusL = digitalRead(pedalL);
if (readStatusL == LOW)
{
delay(debounce);
if (readStatusL == LOW)
{
//digitalWrite(outPinL, HIGH);
Serial.write(0x13);
//Serial.println(2);
}
else
{
//digitalWrite(outPinL, LOW);
//Serial.println(3);
}
}
if (readStatusL == HIGH)
//digitalWrite(outPinL, LOW);
readStatusR = digitalRead(pedalR);
if (readStatusR == HIGH)
{
delay(debounce);
if (readStatusR == HIGH)
{
//digitalWrite(outPinR, HIGH);
Serial.write(0x14);
//Serial.println(4);
}
else
{
//digitalWrite(outPinR, LOW);
//Serial.println(5);
}
}
if (readStatusR == LOW)
{
//digitalWrite(outPinR, LOW);
}
}
Ok so it is my understanding that issuing a Serial.write command will write the data (hopefully in hex) to the transmission port (pin 1) and if I recall correctly this is linked directly into the USB shield on the ADK board. So my problems complicate because I want to connect the ADK via USB to an Android Tablet (currently running Honeycomb) and get the tablet to recognize the ADK as a keyboard input. The purpose behind this is I have written an android app that uses the up and down arrows on the keyboard (KEYCODE_DPAD_DOWN and KEYCODE_DPAD_UP are the Android scancodes which translate to 0x0014 and 0x0013 in hex). This works with a normal USB keyboard and also with a Bluetooth pedal (PageFlip Cicada) that issues the up and down arrow key commands.
Now as it stands, here is what I have read about trying to implement this feature.
http://source.android.com/tech/input/keyboard-devices.html Talks about keyboard devices in general
http://developer.android.com/guide/topics/usb/adk.html Talks about Using Android Open Accessory Dev. Kit
So in short I am a little stuck. If you need more information please post your specific questions and as always feedback is appreciated.