Demo of the RA8875 Keypad to enter a username and password.
Dependencies: mbed RA8875 Keypad
Diff: main.cpp
- Revision:
- 2:117fb9168afc
- Parent:
- 1:0fea662d1826
- Child:
- 3:954431ea9b0d
--- a/main.cpp Fri Mar 04 12:24:32 2016 +0000 +++ b/main.cpp Sat Mar 05 16:23:10 2016 +0000 @@ -32,6 +32,7 @@ }; + void CalibrateTS(void) { FILE * fh; @@ -67,54 +68,101 @@ } } + +void UsernameAndPasswordTest(void) { + char name1[20]; + char name2[20]; + + kp.SetKeyboard(); + lcd.puts(0,20, "Enter username and password\r\n"); + if (kp.GetString(name1, sizeof(name1), "Username:")) { + //lcd.printf("username: %s\r\n", name1); + if (kp.GetString(name2, sizeof(name2), "Password:", '*')) { + //lcd.printf("password: %s\r\n", name2); + kp.Erase(); + lcd.foreground(BrightRed); + lcd.background(Black); + lcd.cls(); + lcd.SetTextFontSize(2); + lcd.SetTextCursor(0,30); + lcd.printf("username: %s\r\npassword: %s\r\n", name1, name2); + lcd.SetTextFontSize(); + } + } else { + kp.Erase(); + pc.printf("<esc>\r\n"); + } +} + + +void CalculatorKeypadTest(void) { + char name1[20]; + + kp.SetKeyboard(&altkeyboard, '='); + if (kp.GetString(name1, sizeof(name1), "Calc:")) { + lcd.foreground(BrightRed); + lcd.background(Black); + lcd.cls(); + lcd.SetTextCursor(0,40); + lcd.printf("Calculator: %s\r\n", name1); + } +} + +void FloatingSmallQWERTYTest(loc_t x, loc_t y, dim_t w, dim_t h) { + Keypad::keyboard_t tiny; + char name1[10]; + + // copy definition and then resize it + memcpy(&tiny, kp.GetInternalKeypad(), sizeof(Keypad::keyboard_t)); + tiny.x = x; tiny.y = y; + tiny.width = w; tiny.height=h; + + // now select this tiny keyboard + kp.SetKeyboard(&tiny); + if (kp.GetString(name1, sizeof(name1), "Cprs:")) { + lcd.foreground(BrightRed); + lcd.background(Black); + lcd.cls(); + lcd.SetTextCursor(0,40); + lcd.printf("Compressed: %s\r\n", name1); + } +} + + + + int main() { - char name1[20], name2[20]; - bool toggle = false; + int testNum = 2; // starting test pc.baud(460800); // I like a snappy terminal, so crank it up! pc.printf("\r\nDev Keypad - Build " __DATE__ " " __TIME__ "\r\n"); lcd.init(); - lcd.foreground(Yellow); - lcd.background(Black); - lcd.puts(0,0, "RA8875 Soft Fonts - Build " __DATE__ " " __TIME__ "\r\n"); InitTS(); while(1) { lcd.foreground(Yellow); lcd.background(Black); lcd.cls(); - if (!toggle) { - kp.SetKeyboard(); - lcd.puts(0,20, "Enter username and password\r\n"); - if (kp.GetString(name1, 20, "Username:")) { - //lcd.printf("username: %s\r\n", name1); - if (kp.GetString(name2, 20, "Password:", '*')) { - //lcd.printf("password: %s\r\n", name2); - kp.Erase(); - lcd.foreground(BrightRed); - lcd.background(Black); - lcd.cls(); - lcd.SetTextFontSize(2); - lcd.SetTextCursor(0,30); - lcd.printf("username: %s\r\npassword: %s\r\n", name1, name2); - lcd.SetTextFontSize(); - } - } else { - kp.Erase(); - pc.printf("<esc>\r\n"); - } - } else { - kp.SetKeyboard(&altkeyboard, '='); - if (kp.GetString(name1, 20, "Calc:")) { - lcd.foreground(BrightRed); - lcd.background(Black); - lcd.cls(); - lcd.SetTextCursor(0,40); - lcd.printf("Calculator: %s\r\n", name1); - } + lcd.puts(0,0, "Dev Keypad - Build " __DATE__ " " __TIME__ "\r\n"); + switch (testNum) { + default: + case 0: + testNum = 0; // capture the overflow and start over... + UsernameAndPasswordTest(); + break; + case 1: + CalculatorKeypadTest(); + break; + case 2: + FloatingSmallQWERTYTest(50,0, 200,0); // horizontally in by 50, width 200, extend to bottom of screen + break; + case 3: + FloatingSmallQWERTYTest(75, 100, 220, 6 * (lcd.fontheight()+4)); // floating with the top at x=75, y=100 + break; } - toggle = !toggle; + testNum++; wait(5); } } +