A basic library for the Freetronics arduino LCD shield.

Fork of freetronicsLCDShield by Koen Kempeneers

Revision:
3:0e04b6c4abb8
Parent:
2:f40a5df43d09
Child:
5:fa933933ccd1
diff -r f40a5df43d09 -r 0e04b6c4abb8 freetronicsLCDShield.h
--- a/freetronicsLCDShield.h	Mon Oct 28 07:59:51 2013 +0000
+++ b/freetronicsLCDShield.h	Thu Oct 31 14:26:31 2013 +0000
@@ -26,6 +26,11 @@
 #define LEFT  0
 #define RIGHT 1
 
+/** 
+  * Provides full LCD support for the HD44780 compatible LCD on the arduino shaped shield.
+  * http://www.freetronics.com/products/lcd-keypad-shield#.UnIr6_nkq0M
+  *
+  */
 class freetronicsLCDShield : public Stream {
     private:
         // Functions
@@ -41,7 +46,17 @@
         AnalogIn _a0;
         
     public:
-        // Constructor
+        /** 
+         * The constructor creates an freeTronics LCD Shield object, the pins are to be provided by the user. In sequence, RegisterSelect, Enable, Data0 
+         * to Data3. Bl is the backlight and a0 is to be provided for button support. 
+         * Bl should be a pin with PWM capabilities and a0 should be an analogue input.
+         * 
+         * The class inherits from stream, therfore writing to the display is as easy as calling printf() to display text or putc() to display a custom character  
+         * 
+         * Example:
+         * @code
+         * <instanceName>.printf("Hello World");
+         * @endcode         */ 
         freetronicsLCDShield (PinName rs /*= PTA13*/, 
                               PinName e  /*= PTD5*/, 
                               PinName d0 /*= PTA4*/, 
@@ -50,18 +65,101 @@
                               PinName d3 /*= PTC9*/,
                               PinName bl /*= PTA12*/,
                               PinName a0 /*= PTB0*/);                               
-                              
+        /** Creates custom characters 
+         *
+         * Characters that aren't included in the LCD controllers character map which includes typically all ASCII characters 
+         * can be generated by writing bitmaps to the character generator ram memory space. For instance the degree sign '°' is an 
+         * extended ASCII character not included in the character map.
+         * It can however be generated using the writeCGRAM member function. Each line of the 5x7 dot matrix is represented by a byte in which
+         * the lower 5 bits correspond to the pixel on the display. In total 8 bytes make up one custom character (the 8th byte represents the
+         * cursor space)
+         *
+         * Example:
+         * @code
+         * CGRAM_DATA[] = {0xC0,    //0b00001100
+         *                 0x12,    //0b00010010 
+         *                 0x12,    //0b00010010 
+         *                 0xC0,    //0b00001100
+         *                 0x00,    //0b00000000 
+         *                 0x00,    //0b00000000 
+         *                 0x00,    //0b00000000 
+         *                 0x00};   //0b00000000
+         * 
+         * <instanceName>.writeCGRAM (0x00, &CGRAM_DATA[0], 8);
+         * @endcode
+         *
+         * The '°' can hereafter be displayed by calling:
+         * @code
+         * <instanceName>.putc (0);
+         * @endcode
+         *
+         */                        
         void writeCGRAM (char address, const char *ptr, char nbytes);
+        
+        /** Sets the current cursor position.
+         *
+         * To place the cursor at a specific location on the display call the setCursorPosition member function, the first argument is the line either 0 
+         * or 1, the second argument is the column 0 .. 15.
+         *
+         */
         void setCursorPosition (int line, int col);
+        
+        /** Sets the backlight.
+         * 
+         * The backlight is turned on (argument true) or off (false) 
+         */  
         void setBackLight (bool blStatus);
+
+        /** Sets the backlight.
+         * 
+         * The backlight intensity is specified by the normalized float argument 0 .. 1 
+         */  
         void setBackLight (float blIntensity);
+        
+        /** Sets cursor appearance.
+         * 
+         * The cursor is set visible (1st argument true) or invisible (false). When the second argument is set when the cStatus is set the cursor blinks. 
+         */  
         void setCursor (bool cStatus = true, bool blink = false);
+        
+        /** Shifts text.
+         * 
+         * Text on the display is shifted left.
+         */  
         void shiftLeft (void);
+        
+        /** Shifts text.
+         * 
+         * Text on the display is shifted right.
+         */  
         void shiftRight (void);
+        
+ 
+        /** Shifts text.
+         * 
+         * Text on the display is shifted left if direction is set (true) or right is direction is reset (false)
+         */  
         void shift (bool direction);
+
+        /** Clears the display, the cursor returns to its home position (0,0).
+         * 
+         * The user should preserve caution when clearing the display in the main program loop, this very quickly results in flickering. A better approach is to
+         * overwrite the display. 
+         */  
         void cls (void);
+
+        /** Returns the cursor to positition (0,0). The display is NOT cleared. 
+         * 
+         * This function differs from setCursorPosition(0,0) in the way that home() undoes all preceding shift operations. i.e. If the display is shifted
+         * one position right, the setCursorPosition(0,0) function call would place the cursor physically at the second character of the first row while
+         * home() places it at the first character of the first row. 
+         */  
         void home(void);
         
+        /** Reads the status of the buttons
+         * 
+         * 
+         */  
         float readButton(void);
              
     protected: