LiquidCrystal_I2C.h (3428B)
1 //YWROBOT 2 #ifndef LiquidCrystal_I2C_h 3 #define LiquidCrystal_I2C_h 4 5 #include <inttypes.h> 6 #include "Print.h" 7 #include <Wire.h> 8 9 // commands 10 #define LCD_CLEARDISPLAY 0x01 11 #define LCD_RETURNHOME 0x02 12 #define LCD_ENTRYMODESET 0x04 13 #define LCD_DISPLAYCONTROL 0x08 14 #define LCD_CURSORSHIFT 0x10 15 #define LCD_FUNCTIONSET 0x20 16 #define LCD_SETCGRAMADDR 0x40 17 #define LCD_SETDDRAMADDR 0x80 18 19 // flags for display entry mode 20 #define LCD_ENTRYRIGHT 0x00 21 #define LCD_ENTRYLEFT 0x02 22 #define LCD_ENTRYSHIFTINCREMENT 0x01 23 #define LCD_ENTRYSHIFTDECREMENT 0x00 24 25 // flags for display on/off control 26 #define LCD_DISPLAYON 0x04 27 #define LCD_DISPLAYOFF 0x00 28 #define LCD_CURSORON 0x02 29 #define LCD_CURSOROFF 0x00 30 #define LCD_BLINKON 0x01 31 #define LCD_BLINKOFF 0x00 32 33 // flags for display/cursor shift 34 #define LCD_DISPLAYMOVE 0x08 35 #define LCD_CURSORMOVE 0x00 36 #define LCD_MOVERIGHT 0x04 37 #define LCD_MOVELEFT 0x00 38 39 // flags for function set 40 #define LCD_8BITMODE 0x10 41 #define LCD_4BITMODE 0x00 42 #define LCD_2LINE 0x08 43 #define LCD_1LINE 0x00 44 #define LCD_5x10DOTS 0x04 45 #define LCD_5x8DOTS 0x00 46 47 // flags for backlight control 48 #define LCD_BACKLIGHT 0x08 49 #define LCD_NOBACKLIGHT 0x00 50 51 #define En B00000100 // Enable bit 52 #define Rw B00000010 // Read/Write bit 53 #define Rs B00000001 // Register select bit 54 55 class LiquidCrystal_I2C : public Print { 56 public: 57 LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows); 58 void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS ); 59 void clear(); 60 void home(); 61 void noDisplay(); 62 void display(); 63 void noBlink(); 64 void blink(); 65 void noCursor(); 66 void cursor(); 67 void scrollDisplayLeft(); 68 void scrollDisplayRight(); 69 void printLeft(); 70 void printRight(); 71 void leftToRight(); 72 void rightToLeft(); 73 void shiftIncrement(); 74 void shiftDecrement(); 75 void noBacklight(); 76 void backlight(); 77 void autoscroll(); 78 void noAutoscroll(); 79 void createChar(uint8_t, uint8_t[]); 80 void setCursor(uint8_t, uint8_t); 81 #if defined(ARDUINO) && ARDUINO >= 100 82 virtual size_t write(uint8_t); 83 #else 84 virtual void write(uint8_t); 85 #endif 86 void command(uint8_t); 87 void init(); 88 89 ////compatibility API function aliases 90 void blink_on(); // alias for blink() 91 void blink_off(); // alias for noBlink() 92 void cursor_on(); // alias for cursor() 93 void cursor_off(); // alias for noCursor() 94 void setBacklight(uint8_t new_val); // alias for backlight() and nobacklight() 95 void load_custom_character(uint8_t char_num, uint8_t *rows); // alias for createChar() 96 void printstr(const char[]); 97 98 ////Unsupported API functions (not implemented in this library) 99 uint8_t status(); 100 void setContrast(uint8_t new_val); 101 uint8_t keypad(); 102 void setDelay(int,int); 103 void on(); 104 void off(); 105 uint8_t init_bargraph(uint8_t graphtype); 106 void draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); 107 void draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); 108 109 110 private: 111 void init_priv(); 112 void send(uint8_t, uint8_t); 113 void write4bits(uint8_t); 114 void expanderWrite(uint8_t); 115 void pulseEnable(uint8_t); 116 uint8_t _Addr; 117 uint8_t _displayfunction; 118 uint8_t _displaycontrol; 119 uint8_t _displaymode; 120 uint8_t _numlines; 121 uint8_t _cols; 122 uint8_t _rows; 123 uint8_t _backlightval; 124 }; 125 126 #endif