Demo of the RA8875 Keypad to enter a username and password.

Dependencies:   mbed RA8875 Keypad

Revision:
1:0fea662d1826
Parent:
0:5cf0d5f4ab84
Child:
2:117fb9168afc
--- a/main.cpp	Mon Feb 08 02:47:49 2016 +0000
+++ b/main.cpp	Fri Mar 04 12:24:32 2016 +0000
@@ -8,6 +8,29 @@
 RA8875 lcd(p5, p6, p7, p12, NC, "tft");    // MOSI, MISO, SCK, /ChipSelect, /reset, name
 Keypad kp(lcd);
 
+// 789 /(
+// 456 *)
+// 123 -
+// 00. +=
+const char numberkeys[] = {
+    5,'\x01', 10,'7',10,'8',10,'9', 5,'\x01', 10,'/',10,'(', 0,0,
+    5,'\x01', 10,'4',10,'5',10,'6', 5,'\x01', 10,'*',10,')', 0,0,
+    5,'\x01', 10,'1',10,'2',10,'3', 5,'\x01', 10,'-',10,KYBD_SYM_BS, 0,0,
+    5,'\x01', 20,'0',       10,'.', 5,'\x01', 10,'+',10,'=', 0,0,
+    0,0
+};
+
+const Keypad::keyboard_t altkeyboard = {
+    100,        // x=100; left edge
+    0,          // y=0; computed from bottom up
+    240,        // width=240
+    0,          // height=0; bottom of screen justified
+    4,          // rows
+    6,          // columns
+    numberkeys, // pointer to the keypad
+    numberkeys
+};
+
 
 void CalibrateTS(void)
 {
@@ -47,6 +70,7 @@
 int main()
 {
     char name1[20], name2[20];
+    bool toggle = false;
 
     pc.baud(460800);                            // I like a snappy terminal, so crank it up!
     pc.printf("\r\nDev Keypad - Build " __DATE__ " " __TIME__ "\r\n");
@@ -60,24 +84,37 @@
         lcd.foreground(Yellow);
         lcd.background(Black);
         lcd.cls();
-        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);
+        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.SetTextFontSize(2);
-                lcd.SetTextCursor(0,30);
-                lcd.printf("username: %s\r\npassword: %s\r\n", name1, name2);
-                lcd.SetTextFontSize();
+                lcd.SetTextCursor(0,40);
+                lcd.printf("Calculator: %s\r\n", name1);
             }
-        } else {
-            kp.Erase();
-            pc.printf("<esc>\r\n");
         }
+        toggle = !toggle;
         wait(5);
     }
 }