-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAirfoil_Remote.ino
60 lines (54 loc) · 1.69 KB
/
Airfoil_Remote.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Airfoil Bluetooth Remote
#define MY_DEBUG 0
#include "BluefruitRoutines.h"
//Pin numbers for switches
#define VOLUME_UP_SWITCH A0
#define VOLUME_DOWN_SWITCH A1
#define PLAY_PAUSE_SWITCH A2
#define NEXT_SWITCH A3
//Actions
#define DO_VOLUME_UP 1
#define DO_VOLUME_DOWN 2
#define DO_PLAY_PAUSE 4
#define DO_NEXT 8
uint8_t readSwitches(void) {
return (~(digitalRead(VOLUME_UP_SWITCH)*DO_VOLUME_UP
+ digitalRead(VOLUME_DOWN_SWITCH)*DO_VOLUME_DOWN
+ digitalRead (PLAY_PAUSE_SWITCH)*DO_PLAY_PAUSE
+ digitalRead (NEXT_SWITCH)*DO_NEXT)
) & (DO_VOLUME_UP+ DO_VOLUME_DOWN+ DO_PLAY_PAUSE+ DO_NEXT);
}
//Translate character to keyboard keycode and transmit
void pressKeyCode (uint8_t c) {
ble.print(F("AT+BLEKEYBOARDCODE=08-00-")); //sends additional left cmd key
uint8_t Code=c;
ble.print(Code,HEX);
ble.println(F("-00-00-00-00"));
MESSAGE(F("Pressed."));
delay(100);//de-bounce
while (readSwitches()) { //wait for button to be released
/*do nothing*/
};
ble.println(F("AT+BLEKEYBOARDCODE=00-00")); //release message
MESSAGE(F("Released"));
}
void setup() {
#if(MY_DEBUG)
while (! Serial) {}; delay (500);
Serial.begin(9600); Serial.println("Debug output");
#endif
pinMode(VOLUME_DOWN_SWITCH, INPUT_PULLUP);
pinMode(PLAY_PAUSE_SWITCH, INPUT_PULLUP);
pinMode(VOLUME_UP_SWITCH, INPUT_PULLUP);
pinMode(NEXT_SWITCH, INPUT_PULLUP);
initializeBluefruit();
}
void loop() {
uint8_t i=readSwitches();
switch (i) {
case DO_VOLUME_UP: pressKeyCode(0x80); break; //Volume up
case DO_VOLUME_DOWN: pressKeyCode(0x81); break; //Volum down
case DO_PLAY_PAUSE: pressKeyCode(0x13); break; //Play/Pause
case DO_NEXT: pressKeyCode(0x17); break; //Next
}
}