Type the only important words you will ever need with this simple keyboard. Input key presses by touching the capacitive slider and watch as the words show up on your screen. Requires the FRDM to be connected to a computer using the USB port.

Dependencies:   USBDevice mbed tsi_sensor

Committer:
oehlberg
Date:
Fri Aug 22 02:12:30 2014 +0000
Revision:
0:fb74ddc7b758
Child:
1:d8b92f4c7e03
First release of the pirates and robots

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oehlberg 0:fb74ddc7b758 1 /* Created by Mark Oehlberg 8/21/14
oehlberg 0:fb74ddc7b758 2
oehlberg 0:fb74ddc7b758 3 Automatic keyboard app
oehlberg 0:fb74ddc7b758 4
oehlberg 0:fb74ddc7b758 5 You are viewing the code for the future of keyboards. You might as well
oehlberg 0:fb74ddc7b758 6 smash your current keyboard, because once you use your KL25Z as
oehlberg 0:fb74ddc7b758 7
oehlberg 0:fb74ddc7b758 8 */
oehlberg 0:fb74ddc7b758 9
oehlberg 0:fb74ddc7b758 10 #include "mbed.h"
oehlberg 0:fb74ddc7b758 11 #include "tsi_sensor.h"
oehlberg 0:fb74ddc7b758 12 #include "USBKeyboard.h"
oehlberg 0:fb74ddc7b758 13
oehlberg 0:fb74ddc7b758 14 /* These defines will be replaced by PinNames soon */
oehlberg 0:fb74ddc7b758 15 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
oehlberg 0:fb74ddc7b758 16 #define ELEC0 9
oehlberg 0:fb74ddc7b758 17 #define ELEC1 10
oehlberg 0:fb74ddc7b758 18 #elif defined (TARGET_KL05Z)
oehlberg 0:fb74ddc7b758 19 #define ELEC0 9
oehlberg 0:fb74ddc7b758 20 #define ELEC1 8
oehlberg 0:fb74ddc7b758 21 #else
oehlberg 0:fb74ddc7b758 22 #error TARGET NOT DEFINED
oehlberg 0:fb74ddc7b758 23 #endif
oehlberg 0:fb74ddc7b758 24
oehlberg 0:fb74ddc7b758 25 Serial pc(USBTX, USBRX);
oehlberg 0:fb74ddc7b758 26 USBKeyboard keyboard;
oehlberg 0:fb74ddc7b758 27
oehlberg 0:fb74ddc7b758 28 bool justpressed = false;
oehlberg 0:fb74ddc7b758 29 float lastpressed = 0.0;
oehlberg 0:fb74ddc7b758 30
oehlberg 0:fb74ddc7b758 31 int main(void) {
oehlberg 0:fb74ddc7b758 32 pc.baud(115200);//I apparently have to do this in the main loop
oehlberg 0:fb74ddc7b758 33 PwmOut led(LED2);//also called LED_GREEN
oehlberg 0:fb74ddc7b758 34 TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
oehlberg 0:fb74ddc7b758 35 pc.printf("\nSerial port activated!\n\r");
oehlberg 0:fb74ddc7b758 36 float i=0.0;
oehlberg 0:fb74ddc7b758 37 while (true) {
oehlberg 0:fb74ddc7b758 38 i=1.0 - tsi.readPercentage();
oehlberg 0:fb74ddc7b758 39 led = i;
oehlberg 0:fb74ddc7b758 40 if (justpressed && (abs(lastpressed-i)>0.1)){
oehlberg 0:fb74ddc7b758 41 justpressed=false;
oehlberg 0:fb74ddc7b758 42 }
oehlberg 0:fb74ddc7b758 43 if ( 0.5 < i && i < 1.0 && not justpressed ){
oehlberg 0:fb74ddc7b758 44 keyboard.printf("Pirates!\r\n");
oehlberg 0:fb74ddc7b758 45 lastpressed = i;
oehlberg 0:fb74ddc7b758 46 justpressed = true;
oehlberg 0:fb74ddc7b758 47 pc.printf(" Pirates - Trigger number=%f\n\r",i);
oehlberg 0:fb74ddc7b758 48 }else if (0.0 < i && i <= 0.5 && not justpressed ){
oehlberg 0:fb74ddc7b758 49 keyboard.printf("ROBOTS!\r\n");
oehlberg 0:fb74ddc7b758 50 lastpressed = i;
oehlberg 0:fb74ddc7b758 51 justpressed = true;
oehlberg 0:fb74ddc7b758 52 pc.printf(" ROBOTS!- Trigger number=%f\n\r",i);
oehlberg 0:fb74ddc7b758 53 }
oehlberg 0:fb74ddc7b758 54
oehlberg 0:fb74ddc7b758 55 wait(0.1);//this is to not overload the PWM output (writing multiple times to the LED)
oehlberg 0:fb74ddc7b758 56 //pc.printf("Reading:%f\tlastpressed:%f Justpressed:%d\n\r", i,lastpressed, justpressed);//debug code
oehlberg 0:fb74ddc7b758 57
oehlberg 0:fb74ddc7b758 58 }
oehlberg 0:fb74ddc7b758 59 }