1 | //DFRobot.com
|
---|
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
|
---|