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

Dependencies:   mbed RA8875 Keypad

Committer:
WiredHome
Date:
Fri Mar 04 12:24:32 2016 +0000
Revision:
1:0fea662d1826
Parent:
0:5cf0d5f4ab84
Child:
2:117fb9168afc
Added a demo of a numeric keypad. It only returns the string entered, but the demo keypad is calculator-like.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 0:5cf0d5f4ab84 1 #include "mbed.h" // v112
WiredHome 0:5cf0d5f4ab84 2 #include "RA8875.h"
WiredHome 0:5cf0d5f4ab84 3 #include "Keypad.h"
WiredHome 0:5cf0d5f4ab84 4
WiredHome 0:5cf0d5f4ab84 5 LocalFileSystem local("local"); // Because I want <PrintScreen>
WiredHome 0:5cf0d5f4ab84 6 Serial pc(USBTX, USBRX); // And a little feedback
WiredHome 0:5cf0d5f4ab84 7
WiredHome 0:5cf0d5f4ab84 8 RA8875 lcd(p5, p6, p7, p12, NC, "tft"); // MOSI, MISO, SCK, /ChipSelect, /reset, name
WiredHome 0:5cf0d5f4ab84 9 Keypad kp(lcd);
WiredHome 0:5cf0d5f4ab84 10
WiredHome 1:0fea662d1826 11 // 789 /(
WiredHome 1:0fea662d1826 12 // 456 *)
WiredHome 1:0fea662d1826 13 // 123 -
WiredHome 1:0fea662d1826 14 // 00. +=
WiredHome 1:0fea662d1826 15 const char numberkeys[] = {
WiredHome 1:0fea662d1826 16 5,'\x01', 10,'7',10,'8',10,'9', 5,'\x01', 10,'/',10,'(', 0,0,
WiredHome 1:0fea662d1826 17 5,'\x01', 10,'4',10,'5',10,'6', 5,'\x01', 10,'*',10,')', 0,0,
WiredHome 1:0fea662d1826 18 5,'\x01', 10,'1',10,'2',10,'3', 5,'\x01', 10,'-',10,KYBD_SYM_BS, 0,0,
WiredHome 1:0fea662d1826 19 5,'\x01', 20,'0', 10,'.', 5,'\x01', 10,'+',10,'=', 0,0,
WiredHome 1:0fea662d1826 20 0,0
WiredHome 1:0fea662d1826 21 };
WiredHome 1:0fea662d1826 22
WiredHome 1:0fea662d1826 23 const Keypad::keyboard_t altkeyboard = {
WiredHome 1:0fea662d1826 24 100, // x=100; left edge
WiredHome 1:0fea662d1826 25 0, // y=0; computed from bottom up
WiredHome 1:0fea662d1826 26 240, // width=240
WiredHome 1:0fea662d1826 27 0, // height=0; bottom of screen justified
WiredHome 1:0fea662d1826 28 4, // rows
WiredHome 1:0fea662d1826 29 6, // columns
WiredHome 1:0fea662d1826 30 numberkeys, // pointer to the keypad
WiredHome 1:0fea662d1826 31 numberkeys
WiredHome 1:0fea662d1826 32 };
WiredHome 1:0fea662d1826 33
WiredHome 0:5cf0d5f4ab84 34
WiredHome 0:5cf0d5f4ab84 35 void CalibrateTS(void)
WiredHome 0:5cf0d5f4ab84 36 {
WiredHome 0:5cf0d5f4ab84 37 FILE * fh;
WiredHome 0:5cf0d5f4ab84 38 tpMatrix_t matrix;
WiredHome 0:5cf0d5f4ab84 39 RetCode_t r;
WiredHome 0:5cf0d5f4ab84 40
WiredHome 0:5cf0d5f4ab84 41 r = lcd.TouchPanelCalibrate("Calibrate the touch panel", &matrix);
WiredHome 0:5cf0d5f4ab84 42 if (r == noerror) {
WiredHome 0:5cf0d5f4ab84 43 fh = fopen("/local/tpcal.cfg", "wb");
WiredHome 0:5cf0d5f4ab84 44 if (fh) {
WiredHome 0:5cf0d5f4ab84 45 fwrite(&matrix, sizeof(tpMatrix_t), 1, fh);
WiredHome 0:5cf0d5f4ab84 46 fclose(fh);
WiredHome 0:5cf0d5f4ab84 47 } else {
WiredHome 0:5cf0d5f4ab84 48 }
WiredHome 0:5cf0d5f4ab84 49 } else {
WiredHome 0:5cf0d5f4ab84 50 }
WiredHome 0:5cf0d5f4ab84 51 }
WiredHome 0:5cf0d5f4ab84 52
WiredHome 0:5cf0d5f4ab84 53
WiredHome 0:5cf0d5f4ab84 54 void InitTS(void)
WiredHome 0:5cf0d5f4ab84 55 {
WiredHome 0:5cf0d5f4ab84 56 FILE * fh;
WiredHome 0:5cf0d5f4ab84 57 tpMatrix_t matrix;
WiredHome 0:5cf0d5f4ab84 58
WiredHome 0:5cf0d5f4ab84 59 fh = fopen("/local/tpcal.cfg", "rb");
WiredHome 0:5cf0d5f4ab84 60 if (fh) {
WiredHome 0:5cf0d5f4ab84 61 fread(&matrix, sizeof(tpMatrix_t), 1, fh);
WiredHome 0:5cf0d5f4ab84 62 fclose(fh);
WiredHome 0:5cf0d5f4ab84 63 lcd.TouchPanelSetMatrix(&matrix);
WiredHome 0:5cf0d5f4ab84 64 pc.printf("Touch Panel calibration set\r\n");
WiredHome 0:5cf0d5f4ab84 65 } else {
WiredHome 0:5cf0d5f4ab84 66 CalibrateTS();
WiredHome 0:5cf0d5f4ab84 67 }
WiredHome 0:5cf0d5f4ab84 68 }
WiredHome 0:5cf0d5f4ab84 69
WiredHome 0:5cf0d5f4ab84 70 int main()
WiredHome 0:5cf0d5f4ab84 71 {
WiredHome 0:5cf0d5f4ab84 72 char name1[20], name2[20];
WiredHome 1:0fea662d1826 73 bool toggle = false;
WiredHome 0:5cf0d5f4ab84 74
WiredHome 0:5cf0d5f4ab84 75 pc.baud(460800); // I like a snappy terminal, so crank it up!
WiredHome 0:5cf0d5f4ab84 76 pc.printf("\r\nDev Keypad - Build " __DATE__ " " __TIME__ "\r\n");
WiredHome 0:5cf0d5f4ab84 77
WiredHome 0:5cf0d5f4ab84 78 lcd.init();
WiredHome 0:5cf0d5f4ab84 79 lcd.foreground(Yellow);
WiredHome 0:5cf0d5f4ab84 80 lcd.background(Black);
WiredHome 0:5cf0d5f4ab84 81 lcd.puts(0,0, "RA8875 Soft Fonts - Build " __DATE__ " " __TIME__ "\r\n");
WiredHome 0:5cf0d5f4ab84 82 InitTS();
WiredHome 0:5cf0d5f4ab84 83 while(1) {
WiredHome 0:5cf0d5f4ab84 84 lcd.foreground(Yellow);
WiredHome 0:5cf0d5f4ab84 85 lcd.background(Black);
WiredHome 0:5cf0d5f4ab84 86 lcd.cls();
WiredHome 1:0fea662d1826 87 if (!toggle) {
WiredHome 1:0fea662d1826 88 kp.SetKeyboard();
WiredHome 1:0fea662d1826 89 lcd.puts(0,20, "Enter username and password\r\n");
WiredHome 1:0fea662d1826 90 if (kp.GetString(name1, 20, "Username:")) {
WiredHome 1:0fea662d1826 91 //lcd.printf("username: %s\r\n", name1);
WiredHome 1:0fea662d1826 92 if (kp.GetString(name2, 20, "Password:", '*')) {
WiredHome 1:0fea662d1826 93 //lcd.printf("password: %s\r\n", name2);
WiredHome 1:0fea662d1826 94 kp.Erase();
WiredHome 1:0fea662d1826 95 lcd.foreground(BrightRed);
WiredHome 1:0fea662d1826 96 lcd.background(Black);
WiredHome 1:0fea662d1826 97 lcd.cls();
WiredHome 1:0fea662d1826 98 lcd.SetTextFontSize(2);
WiredHome 1:0fea662d1826 99 lcd.SetTextCursor(0,30);
WiredHome 1:0fea662d1826 100 lcd.printf("username: %s\r\npassword: %s\r\n", name1, name2);
WiredHome 1:0fea662d1826 101 lcd.SetTextFontSize();
WiredHome 1:0fea662d1826 102 }
WiredHome 1:0fea662d1826 103 } else {
WiredHome 0:5cf0d5f4ab84 104 kp.Erase();
WiredHome 1:0fea662d1826 105 pc.printf("<esc>\r\n");
WiredHome 1:0fea662d1826 106 }
WiredHome 1:0fea662d1826 107 } else {
WiredHome 1:0fea662d1826 108 kp.SetKeyboard(&altkeyboard, '=');
WiredHome 1:0fea662d1826 109 if (kp.GetString(name1, 20, "Calc:")) {
WiredHome 0:5cf0d5f4ab84 110 lcd.foreground(BrightRed);
WiredHome 0:5cf0d5f4ab84 111 lcd.background(Black);
WiredHome 0:5cf0d5f4ab84 112 lcd.cls();
WiredHome 1:0fea662d1826 113 lcd.SetTextCursor(0,40);
WiredHome 1:0fea662d1826 114 lcd.printf("Calculator: %s\r\n", name1);
WiredHome 0:5cf0d5f4ab84 115 }
WiredHome 0:5cf0d5f4ab84 116 }
WiredHome 1:0fea662d1826 117 toggle = !toggle;
WiredHome 0:5cf0d5f4ab84 118 wait(5);
WiredHome 0:5cf0d5f4ab84 119 }
WiredHome 0:5cf0d5f4ab84 120 }