Display librairy manage 3 LED and a TextLCD (on, off, flash) (print message, clear)

Committer:
us191
Date:
Fri May 03 08:21:39 2013 +0000
Revision:
0:71286332d6f7
Child:
1:fa0962d6e0b0
Display librairy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
us191 0:71286332d6f7 1 /* import TextLCD librairie and Led librairies
us191 0:71286332d6f7 2 * https://mbed.org/compiler/#import:https://mbed.org/users/simon/code/TextLCD/;mode:lib
us191 0:71286332d6f7 3 * https://mbed.org/compiler/#import:https://mbed.org/users/us191/code/LED/;mode:lib
us191 0:71286332d6f7 4 */
us191 0:71286332d6f7 5
us191 0:71286332d6f7 6 #ifndef Display_H
us191 0:71286332d6f7 7 #define Display_H
us191 0:71286332d6f7 8
us191 0:71286332d6f7 9 #include "mbed.h"
us191 0:71286332d6f7 10 #include "TextLCD.h"
us191 0:71286332d6f7 11 #include "Led.h"
us191 0:71286332d6f7 12 #include "string"
us191 0:71286332d6f7 13 #include <vector>
us191 0:71286332d6f7 14
us191 0:71286332d6f7 15
us191 0:71286332d6f7 16 /** This class manage 3 LED and 1 TextLCD display
us191 0:71286332d6f7 17 * She permit to print messages and to light or flash LED
us191 0:71286332d6f7 18 *
us191 0:71286332d6f7 19 * @code
us191 0:71286332d6f7 20 * #include "mbed.h"
us191 0:71286332d6f7 21 * #include "Display.h"
us191 0:71286332d6f7 22 *
us191 0:71286332d6f7 23 * Display disp(p12, p13, p14, p15, p16, p5, p6, p7, p8); // greenLED, redLED, orangeLED, LCD : rs, e, d4-d7 (default : 16X2 screen)
us191 0:71286332d6f7 24 *
us191 0:71286332d6f7 25 * float delay = 3;
us191 0:71286332d6f7 26 *
us191 0:71286332d6f7 27 *
us191 0:71286332d6f7 28 * int main() {
us191 0:71286332d6f7 29 *
us191 0:71286332d6f7 30 * // print "HelloWorld !" on LCD screen and put on greenLED, flash redLED and put off orangeLED
us191 0:71286332d6f7 31 * disp.printMessage("Hello World !", Display::on, Display::flash, Display::off);
us191 0:71286332d6f7 32 * wait(delay);
us191 0:71286332d6f7 33 *
us191 0:71286332d6f7 34 * // print "coucou !" on LCD screen and put off greenLED, put on redLED and flash orangeLED
us191 0:71286332d6f7 35 * disp.printMessage("coucou !", Display::off, Display::on, Display::flash);
us191 0:71286332d6f7 36 * wait(delay);
us191 0:71286332d6f7 37 *
us191 0:71286332d6f7 38 * // print "bye bye !" on LCD screen and flash greenLED, put off redLED and put on orangeLED
us191 0:71286332d6f7 39 * disp.printMessage("bye bye !", Display::flash, Display::off, Display::on);
us191 0:71286332d6f7 40 * wait(delay);
us191 0:71286332d6f7 41 *
us191 0:71286332d6f7 42 * // clear LCD screen and shutdown 3 LED
us191 0:71286332d6f7 43 * disp.clear();
us191 0:71286332d6f7 44 * }
us191 0:71286332d6f7 45 * @encode
us191 0:71286332d6f7 46 */
us191 0:71286332d6f7 47
us191 0:71286332d6f7 48 class Display {
us191 0:71286332d6f7 49
us191 0:71286332d6f7 50 public :
us191 0:71286332d6f7 51
us191 0:71286332d6f7 52 /** use by printMessage() and changeStatusLed() */
us191 0:71286332d6f7 53 enum choiceStatusLED {
us191 0:71286332d6f7 54 on /**< put on led */
us191 0:71286332d6f7 55 , off /**< put off led */
us191 0:71286332d6f7 56 , flash /**< flash led */
us191 0:71286332d6f7 57 };
us191 0:71286332d6f7 58
us191 0:71286332d6f7 59
us191 0:71286332d6f7 60 /** Create a Display interface (default : 16X2 screen)
us191 0:71286332d6f7 61 *
us191 0:71286332d6f7 62 * @param pinGreenLED greenLED broche
us191 0:71286332d6f7 63 * @param pinRedLED redLED broche
us191 0:71286332d6f7 64 * @param pinOrangeLED orangeLED broche
us191 0:71286332d6f7 65 * @param pinLCDrs LCD Instruction/data control line
us191 0:71286332d6f7 66 * @param pinLCDe LCD Enable line (clock)
us191 0:71286332d6f7 67 * @param pinLCDd0-d3 LCD Data lines
us191 0:71286332d6f7 68 */
us191 0:71286332d6f7 69 Display(PinName pinGreenLED, PinName pinRedLED, PinName pinOrangeLED, PinName pinLCDrs, PinName pinLCDe,
us191 0:71286332d6f7 70 PinName pinLCDd0, PinName pinLCDd1, PinName pinLCDd2, PinName pinLCDd3);
us191 0:71286332d6f7 71
us191 0:71286332d6f7 72 /** Create a Display interface
us191 0:71286332d6f7 73 *
us191 0:71286332d6f7 74 * @param pinGreenLED greenLED broche
us191 0:71286332d6f7 75 * @param pinRedLED redLED broche
us191 0:71286332d6f7 76 * @param pinOrangeLED orangeLED broche
us191 0:71286332d6f7 77 * @param pinLCDrs LCD Instruction/data control line
us191 0:71286332d6f7 78 * @param pinLCDe LCD Enable line (clock)
us191 0:71286332d6f7 79 * @param pinLCDd0-d3 LCD Data lines
us191 0:71286332d6f7 80 * @param typeScreen LCD Sets the panel size/addressing mode (default = LCD16x2)
us191 0:71286332d6f7 81 */
us191 0:71286332d6f7 82 Display(PinName pinGreenLED, PinName pinRedLED, PinName pinOrangeLED, PinName pinLCDrs, PinName pinLCDe,
us191 0:71286332d6f7 83 PinName pinLCDd0, PinName pinLCDd1, PinName pinLCDd2, PinName pinLCDd3, TextLCD::LCDType typeScreen);
us191 0:71286332d6f7 84
us191 0:71286332d6f7 85 /** Destructor
us191 0:71286332d6f7 86 */
us191 0:71286332d6f7 87 ~Display(void);
us191 0:71286332d6f7 88
us191 0:71286332d6f7 89
us191 0:71286332d6f7 90 #if DOXYGEN_ONLY
us191 0:71286332d6f7 91
us191 0:71286332d6f7 92 /** print message on LCD screen and change status of green, red and orange LED
us191 0:71286332d6f7 93 * all line except the last line, have to finish by '\n'. Warning : '\n' count like a character
us191 0:71286332d6f7 94 * don't end message by '\n'
us191 0:71286332d6f7 95 *
us191 0:71286332d6f7 96 * @param message message will be display on screen
us191 0:71286332d6f7 97 * @param statusGreenLED new status of greenLED (on, off, flash)
us191 0:71286332d6f7 98 * @param statusRedLED new status of redLED (on, off, flash)
us191 0:71286332d6f7 99 * @param statusOrangeLED new status of orangeLED (on, off, flash)
us191 0:71286332d6f7 100 */
us191 0:71286332d6f7 101 void printMessage(string message, choiceStatusLED statusGreenLED, choiceStatusLED statusRedLED, choiceStatusLED statusOrangeLED);
us191 0:71286332d6f7 102
us191 0:71286332d6f7 103 /** put off 3 LED and clear LCD screen
us191 0:71286332d6f7 104 */
us191 0:71286332d6f7 105 void clear(void);
us191 0:71286332d6f7 106 #endif
us191 0:71286332d6f7 107
us191 0:71286332d6f7 108 protected :
us191 0:71286332d6f7 109
us191 0:71286332d6f7 110 /** 3 led manage by current object */
us191 0:71286332d6f7 111 Led _greenLED, _redLED, _orangeLED;
us191 0:71286332d6f7 112 /** LCD screen manage by current object */
us191 0:71286332d6f7 113 TextLCD _lcd;
us191 0:71286332d6f7 114
us191 0:71286332d6f7 115 /** use by changeStatusLed() */
us191 0:71286332d6f7 116 enum choiceLED {
us191 0:71286332d6f7 117 green /**< choice greenLED */
us191 0:71286332d6f7 118 , red /**< choice redLED */
us191 0:71286332d6f7 119 , orange /**< choice orangeLED */
us191 0:71286332d6f7 120 };
us191 0:71286332d6f7 121
us191 0:71286332d6f7 122
us191 0:71286332d6f7 123
us191 0:71286332d6f7 124 /** change led status to statusLED
us191 0:71286332d6f7 125 * use by printMessage()
us191 0:71286332d6f7 126 *
us191 0:71286332d6f7 127 * @param led the led (green, red, orange)
us191 0:71286332d6f7 128 * @param statusLED new status (on, off, flash)
us191 0:71286332d6f7 129 */
us191 0:71286332d6f7 130 void changeStatusLED(choiceLED led, choiceStatusLED statusLED);
us191 0:71286332d6f7 131
us191 0:71286332d6f7 132 /** put off 3 LED
us191 0:71286332d6f7 133 * use by clear()
us191 0:71286332d6f7 134 */
us191 0:71286332d6f7 135 void shutdownLED(void);
us191 0:71286332d6f7 136
us191 0:71286332d6f7 137 /** clear LCD screen
us191 0:71286332d6f7 138 * use by clear()
us191 0:71286332d6f7 139 */
us191 0:71286332d6f7 140 void cls(void);
us191 0:71286332d6f7 141
us191 0:71286332d6f7 142 /** check if this message can be display correctly on LCD screen
us191 0:71286332d6f7 143 * use by printMessage()
us191 0:71286332d6f7 144 *
us191 0:71286332d6f7 145 * @param message the message to be verified
us191 0:71286332d6f7 146 * @return
us191 0:71286332d6f7 147 * true if message is ok
us191 0:71286332d6f7 148 * flase else
us191 0:71286332d6f7 149 */
us191 0:71286332d6f7 150 bool checkMessage(string message);
us191 0:71286332d6f7 151
us191 0:71286332d6f7 152 /** calcul number of '\n'
us191 0:71286332d6f7 153 * use by checkMessage()
us191 0:71286332d6f7 154 *
us191 0:71286332d6f7 155 * @param message the message to be analyse
us191 0:71286332d6f7 156 * @return number of '\n'
us191 0:71286332d6f7 157 */
us191 0:71286332d6f7 158 int calculNbCRLF(string message);
us191 0:71286332d6f7 159
us191 0:71286332d6f7 160 /** return vector of all line message
us191 0:71286332d6f7 161 * use by checkMessage()
us191 0:71286332d6f7 162 *
us191 0:71286332d6f7 163 * @param message the message to be cut
us191 0:71286332d6f7 164 * @return a vector which contains a line of the message by entry
us191 0:71286332d6f7 165 */
us191 0:71286332d6f7 166 vector<string> subAllLine(string message);
us191 0:71286332d6f7 167
us191 0:71286332d6f7 168 };
us191 0:71286332d6f7 169
us191 0:71286332d6f7 170 #endif