![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Demo of the RA8875 Keypad to enter a username and password.
Dependencies: mbed RA8875 Keypad
main.cpp
- Committer:
- WiredHome
- Date:
- 2016-03-04
- Revision:
- 1:0fea662d1826
- Parent:
- 0:5cf0d5f4ab84
- Child:
- 2:117fb9168afc
File content as of revision 1:0fea662d1826:
#include "mbed.h" // v112 #include "RA8875.h" #include "Keypad.h" LocalFileSystem local("local"); // Because I want <PrintScreen> Serial pc(USBTX, USBRX); // And a little feedback 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) { FILE * fh; tpMatrix_t matrix; RetCode_t r; r = lcd.TouchPanelCalibrate("Calibrate the touch panel", &matrix); if (r == noerror) { fh = fopen("/local/tpcal.cfg", "wb"); if (fh) { fwrite(&matrix, sizeof(tpMatrix_t), 1, fh); fclose(fh); } else { } } else { } } void InitTS(void) { FILE * fh; tpMatrix_t matrix; fh = fopen("/local/tpcal.cfg", "rb"); if (fh) { fread(&matrix, sizeof(tpMatrix_t), 1, fh); fclose(fh); lcd.TouchPanelSetMatrix(&matrix); pc.printf("Touch Panel calibration set\r\n"); } else { CalibrateTS(); } } 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"); 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); } } toggle = !toggle; wait(5); } }