Code for RFID Robot
Dependencies: DebounceIn HTTPClient ID12RFID SDFileSystem TextLCD WiflyInterface iniparser mbed
LCDText.cpp@0:9fd64882c5aa, 2013-12-10 (annotated)
- Committer:
- 4180skrw
- Date:
- Tue Dec 10 02:17:48 2013 +0000
- Revision:
- 0:9fd64882c5aa
initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
4180skrw | 0:9fd64882c5aa | 1 | #include "LCDText.h" |
4180skrw | 0:9fd64882c5aa | 2 | |
4180skrw | 0:9fd64882c5aa | 3 | void clearLCD() { |
4180skrw | 0:9fd64882c5aa | 4 | char buff[33]; |
4180skrw | 0:9fd64882c5aa | 5 | memset(buff, ' ', 32); |
4180skrw | 0:9fd64882c5aa | 6 | buff[32] = '\0'; |
4180skrw | 0:9fd64882c5aa | 7 | mylcd.printf(buff); |
4180skrw | 0:9fd64882c5aa | 8 | } |
4180skrw | 0:9fd64882c5aa | 9 | |
4180skrw | 0:9fd64882c5aa | 10 | //clears LCD and prints the two strings centered on each line |
4180skrw | 0:9fd64882c5aa | 11 | //max length of each string is 16 |
4180skrw | 0:9fd64882c5aa | 12 | void printLCD(const char* string1, const char* string2) { |
4180skrw | 0:9fd64882c5aa | 13 | char buff[33]; |
4180skrw | 0:9fd64882c5aa | 14 | memset(buff, ' ', 32); |
4180skrw | 0:9fd64882c5aa | 15 | buff[32] = '\0'; |
4180skrw | 0:9fd64882c5aa | 16 | //clear LCD |
4180skrw | 0:9fd64882c5aa | 17 | clearLCD(); |
4180skrw | 0:9fd64882c5aa | 18 | |
4180skrw | 0:9fd64882c5aa | 19 | //print to LCD |
4180skrw | 0:9fd64882c5aa | 20 | if(string1) { |
4180skrw | 0:9fd64882c5aa | 21 | memcpy(buff+(16-strlen(string1))/2, string1, strlen(string1)); |
4180skrw | 0:9fd64882c5aa | 22 | } |
4180skrw | 0:9fd64882c5aa | 23 | if(string2) { |
4180skrw | 0:9fd64882c5aa | 24 | memcpy(buff+16+(16-strlen(string2))/2, string2, strlen(string2)); |
4180skrw | 0:9fd64882c5aa | 25 | } |
4180skrw | 0:9fd64882c5aa | 26 | mylcd.printf(buff); |
4180skrw | 0:9fd64882c5aa | 27 | } |
4180skrw | 0:9fd64882c5aa | 28 | |
4180skrw | 0:9fd64882c5aa | 29 | //creates a menu with with a title, controlled by the up/down/select buttons |
4180skrw | 0:9fd64882c5aa | 30 | //returns index of option selected |
4180skrw | 0:9fd64882c5aa | 31 | int displayMenu(const char* menuTitle, const char** menuOptions, int numOptions) { |
4180skrw | 0:9fd64882c5aa | 32 | int curSelection = 0; |
4180skrw | 0:9fd64882c5aa | 33 | |
4180skrw | 0:9fd64882c5aa | 34 | printLCD(menuTitle, menuOptions[curSelection]); |
4180skrw | 0:9fd64882c5aa | 35 | if(!up || !down || !select || !back) wait(.3); |
4180skrw | 0:9fd64882c5aa | 36 | while(1) { |
4180skrw | 0:9fd64882c5aa | 37 | if(!up) { |
4180skrw | 0:9fd64882c5aa | 38 | curSelection = (curSelection == numOptions-1) ? 0 : (curSelection + 1); |
4180skrw | 0:9fd64882c5aa | 39 | printLCD(menuTitle, menuOptions[curSelection]); |
4180skrw | 0:9fd64882c5aa | 40 | if(!up) wait(.2); |
4180skrw | 0:9fd64882c5aa | 41 | } |
4180skrw | 0:9fd64882c5aa | 42 | if(!down) { |
4180skrw | 0:9fd64882c5aa | 43 | curSelection = (curSelection == 0) ? (numOptions - 1) : (curSelection - 1); |
4180skrw | 0:9fd64882c5aa | 44 | printLCD(menuTitle, menuOptions[curSelection]); |
4180skrw | 0:9fd64882c5aa | 45 | if(!down) wait(.2); |
4180skrw | 0:9fd64882c5aa | 46 | } |
4180skrw | 0:9fd64882c5aa | 47 | if(!select) { |
4180skrw | 0:9fd64882c5aa | 48 | clearLCD(); |
4180skrw | 0:9fd64882c5aa | 49 | return curSelection; |
4180skrw | 0:9fd64882c5aa | 50 | } |
4180skrw | 0:9fd64882c5aa | 51 | if(!back) { |
4180skrw | 0:9fd64882c5aa | 52 | clearLCD(); |
4180skrw | 0:9fd64882c5aa | 53 | return -1; |
4180skrw | 0:9fd64882c5aa | 54 | } |
4180skrw | 0:9fd64882c5aa | 55 | } |
4180skrw | 0:9fd64882c5aa | 56 | } |