Seeed
/
MaKeyMaKey_mbed_version
MaKey MaKey mbed version, http://makeymakey.com/
Revision 0:4755a81efb1d, committed 2014-05-26
- Comitter:
- yihui
- Date:
- Mon May 26 08:03:17 2014 +0000
- Commit message:
- initial
Changed in this revision
diff -r 000000000000 -r 4755a81efb1d USBDevice.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/USBDevice.lib Mon May 26 08:03:17 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/USBDevice/#33920e3786aa
diff -r 000000000000 -r 4755a81efb1d main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon May 26 08:03:17 2014 +0000 @@ -0,0 +1,64 @@ +#include "mbed.h" +#include "USBKeyboard.h" + +#define LOG(args...) // printf(args) + +#define THRESHOLD 2 +#define TOUCH_N 6 + +BusOut leds(LED1, LED2, LED3, LED4); +Ticker tick; +USBKeyboard keyboard; + +uint8_t key_map[TOUCH_N] = {RIGHT_ARROW, LEFT_ARROW, DOWN_ARROW, UP_ARROW, ' ', '\n'}; +PinName touch_pin[TOUCH_N] = {A0, A1, A2, A3, A4, A5}; +DigitalInOut *p_touch_io[TOUCH_N]; + +uint8_t touch_data[TOUCH_N] = {0, }; + +void detect(void) +{ + for (int i = 0; i < TOUCH_N; i++) { + uint8_t count = 0; + DigitalInOut *touch_io = p_touch_io[i]; + + touch_io->input(); + touch_data[i] <<= 1; + while (touch_io->read()) { + count++; + if (count > THRESHOLD) { + touch_data[i] |= 0x01; + break; + } + } + touch_io->output(); + touch_io->write(1); + + if (0x01 == touch_data[i]) { // a measurement is about the threshold, get a touch + leds = 1 << i; + keyboard.putc(key_map[i]); + LOG("No %d key is touched\r\n", i); + } else if (0x80 == touch_data[i]) { // last 7 measurement is under the threshold, touch is released + leds = 0x00; + LOG("No %d key is released\r\n", i); + } + } +} + +int main() +{ + // setup + for (int i = 0; i < TOUCH_N; i++) { + p_touch_io[i] = new DigitalInOut(touch_pin[i]); + p_touch_io[i]->mode(PullDown); + p_touch_io[i]->output(); + p_touch_io[i]->write(1); + } + + tick.attach(detect, 1.0 / 64.0); + + while(1) { + // do something + wait(1); + } +}
diff -r 000000000000 -r 4755a81efb1d mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon May 26 08:03:17 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/0b3ab51c8877 \ No newline at end of file