FRDM-K64F fork of David Smart's RA8875 TFT Display with onscreen QWERTY touch keypad Demo

Dependencies:   Keypad RA8875 SDFileSystem mbed

Fork of RA8875_Demo by FRDM-K64F Code Share

Committer:
unix_guru
Date:
Tue Feb 23 03:50:39 2016 +0000
Revision:
14:d71b1aa3c8bf
Parent:
13:3f6204d6140a
FRDM-K64F variant of David Smart's RA8875 KeyPad demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 0:037b95a5cc85 1
unix_guru 14:d71b1aa3c8bf 2 #include "mbed.h"
unix_guru 14:d71b1aa3c8bf 3 #include "RA8875.h"
unix_guru 14:d71b1aa3c8bf 4 #include "Keypad.h"
unix_guru 14:d71b1aa3c8bf 5
WiredHome 5:bb970d40cd7d 6 #include "MyFont18x32.h"
WiredHome 5:bb970d40cd7d 7 #include "BPG_Arial08x08.h"
WiredHome 5:bb970d40cd7d 8 #include "BPG_Arial10x10.h"
WiredHome 5:bb970d40cd7d 9 #include "BPG_Arial20x20.h"
WiredHome 5:bb970d40cd7d 10 #include "BPG_Arial31x32.h"
WiredHome 5:bb970d40cd7d 11 #include "BPG_Arial63x63.h"
WiredHome 0:037b95a5cc85 12
unix_guru 13:3f6204d6140a 13 #include "SDFileSystem.h"
unix_guru 13:3f6204d6140a 14 #include "FATFileSystem.h"
unix_guru 13:3f6204d6140a 15
unix_guru 13:3f6204d6140a 16
unix_guru 13:3f6204d6140a 17
unix_guru 13:3f6204d6140a 18 //LocalFileSystem local("local"); // Because I want <PrintScreen>
unix_guru 13:3f6204d6140a 19 // Localfile system is not avail on K64F, but SD card is.
unix_guru 13:3f6204d6140a 20 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
unix_guru 13:3f6204d6140a 21
WiredHome 5:bb970d40cd7d 22 Serial pc(USBTX, USBRX); // And a little feedback
WiredHome 0:037b95a5cc85 23
unix_guru 14:d71b1aa3c8bf 24 RA8875 lcd(PTD2, PTD3, PTD1, PTD0, NC, "tft"); // MOSI, MISO, SCK, /ChipSelect, /reset, name
unix_guru 14:d71b1aa3c8bf 25 Keypad kp(lcd); // Associate Virtual keypad with the RA8875 TFT
unix_guru 14:d71b1aa3c8bf 26
unix_guru 14:d71b1aa3c8bf 27
unix_guru 14:d71b1aa3c8bf 28 void CalibrateTS(void)
unix_guru 14:d71b1aa3c8bf 29 {
unix_guru 14:d71b1aa3c8bf 30 FILE * fh;
unix_guru 14:d71b1aa3c8bf 31 tpMatrix_t matrix;
unix_guru 14:d71b1aa3c8bf 32 RetCode_t r;
unix_guru 14:d71b1aa3c8bf 33
unix_guru 14:d71b1aa3c8bf 34 r = lcd.TouchPanelCalibrate("Calibrate the touch panel", &matrix);
unix_guru 14:d71b1aa3c8bf 35 if (r == noerror) {
unix_guru 14:d71b1aa3c8bf 36 fh = fopen("/sd/tpcal.cfg", "wb");
unix_guru 14:d71b1aa3c8bf 37 if (fh) {
unix_guru 14:d71b1aa3c8bf 38 fwrite(&matrix, sizeof(tpMatrix_t), 1, fh);
unix_guru 14:d71b1aa3c8bf 39 fclose(fh);
unix_guru 14:d71b1aa3c8bf 40 } else {
unix_guru 14:d71b1aa3c8bf 41 }
unix_guru 14:d71b1aa3c8bf 42 } else {
unix_guru 14:d71b1aa3c8bf 43 }
unix_guru 14:d71b1aa3c8bf 44 }
unix_guru 14:d71b1aa3c8bf 45
unix_guru 14:d71b1aa3c8bf 46
unix_guru 14:d71b1aa3c8bf 47 void InitTS(void)
unix_guru 14:d71b1aa3c8bf 48 {
unix_guru 14:d71b1aa3c8bf 49 FILE * fh;
unix_guru 14:d71b1aa3c8bf 50 tpMatrix_t matrix;
unix_guru 14:d71b1aa3c8bf 51
unix_guru 14:d71b1aa3c8bf 52 fh = fopen("/sd/tpcal.cfg", "rb");
unix_guru 14:d71b1aa3c8bf 53 if (fh) {
unix_guru 14:d71b1aa3c8bf 54 fread(&matrix, sizeof(tpMatrix_t), 1, fh);
unix_guru 14:d71b1aa3c8bf 55 fclose(fh);
unix_guru 14:d71b1aa3c8bf 56 lcd.TouchPanelSetMatrix(&matrix);
unix_guru 14:d71b1aa3c8bf 57 pc.printf("Touch Panel calibration set\r\n");
unix_guru 14:d71b1aa3c8bf 58 } else {
unix_guru 14:d71b1aa3c8bf 59 CalibrateTS();
unix_guru 14:d71b1aa3c8bf 60 }
unix_guru 14:d71b1aa3c8bf 61 }
unix_guru 14:d71b1aa3c8bf 62
unix_guru 14:d71b1aa3c8bf 63
WiredHome 0:037b95a5cc85 64 int main()
WiredHome 0:037b95a5cc85 65 {
unix_guru 14:d71b1aa3c8bf 66 char name1[20], name2[20];
unix_guru 14:d71b1aa3c8bf 67
unix_guru 14:d71b1aa3c8bf 68 pc.baud(115200);
unix_guru 14:d71b1aa3c8bf 69 pc.printf("\r\nDev Keypad - Build " __DATE__ " " __TIME__ "\r\n");
unix_guru 14:d71b1aa3c8bf 70
WiredHome 3:ca6a1026c28e 71 lcd.init();
unix_guru 14:d71b1aa3c8bf 72 lcd.foreground(Yellow);
unix_guru 14:d71b1aa3c8bf 73 lcd.background(Black);
WiredHome 5:bb970d40cd7d 74 lcd.puts(0,0, "RA8875 Soft Fonts - Build " __DATE__ " " __TIME__ "\r\n");
unix_guru 14:d71b1aa3c8bf 75 InitTS();
unix_guru 14:d71b1aa3c8bf 76 while(1) {
unix_guru 14:d71b1aa3c8bf 77 lcd.foreground(Yellow);
unix_guru 14:d71b1aa3c8bf 78 lcd.background(Black);
unix_guru 14:d71b1aa3c8bf 79 lcd.cls();
unix_guru 14:d71b1aa3c8bf 80 lcd.puts(0,20, "Enter username and password\r\n");
unix_guru 14:d71b1aa3c8bf 81 if (kp.GetString(name1, 20, "Username:")) {
unix_guru 14:d71b1aa3c8bf 82 pc.printf("PrintScreen activated ...\r\n");
unix_guru 14:d71b1aa3c8bf 83 RetCode_t r = lcd.PrintScreen(0,0,480,272,"/sd/file2.bmp");
WiredHome 5:bb970d40cd7d 84 pc.printf(" PrintScreen returned %d\r\n", r);
unix_guru 14:d71b1aa3c8bf 85 lcd.printf("username: %s\r\n", name1);
unix_guru 14:d71b1aa3c8bf 86 if (kp.GetString(name2, 20, "Password:", '*')) {
unix_guru 14:d71b1aa3c8bf 87 lcd.printf("password: %s\r\n", name2);
unix_guru 14:d71b1aa3c8bf 88 kp.Erase();
unix_guru 14:d71b1aa3c8bf 89 lcd.foreground(BrightRed);
unix_guru 14:d71b1aa3c8bf 90 lcd.background(Black);
unix_guru 14:d71b1aa3c8bf 91 lcd.cls();
unix_guru 14:d71b1aa3c8bf 92 lcd.SetTextFontSize(2);
unix_guru 14:d71b1aa3c8bf 93 lcd.SetTextCursor(0,30);
unix_guru 14:d71b1aa3c8bf 94 lcd.printf("username: %s\r\npassword: %s\r\n", name1, name2);
unix_guru 14:d71b1aa3c8bf 95 lcd.SetTextFontSize();
unix_guru 14:d71b1aa3c8bf 96
unix_guru 14:d71b1aa3c8bf 97
unix_guru 14:d71b1aa3c8bf 98 }
unix_guru 14:d71b1aa3c8bf 99 } else {
unix_guru 14:d71b1aa3c8bf 100 kp.Erase();
unix_guru 14:d71b1aa3c8bf 101 pc.printf("<esc>\r\n");
unix_guru 14:d71b1aa3c8bf 102 }
unix_guru 14:d71b1aa3c8bf 103 wait(5);
WiredHome 3:ca6a1026c28e 104 }
WiredHome 0:037b95a5cc85 105 }
unix_guru 14:d71b1aa3c8bf 106