first commit
This commit is contained in:
282
libraries/Adafruit_LiquidCrystal/Adafruit_LiquidCrystal.h
Normal file
282
libraries/Adafruit_LiquidCrystal/Adafruit_LiquidCrystal.h
Normal file
@@ -0,0 +1,282 @@
|
||||
/*!
|
||||
* @file Adafruit_LiquidCrystal.h
|
||||
*/
|
||||
#ifndef Adafruit_LiquidCrystal_h
|
||||
#define Adafruit_LiquidCrystal_h
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "Print.h"
|
||||
#include <Adafruit_MCP23X08.h>
|
||||
|
||||
// commands
|
||||
#define LCD_CLEARDISPLAY 0x01 //!< Clear display, set cursor position to zero
|
||||
#define LCD_RETURNHOME 0x02 //!< Set cursor position to zero
|
||||
#define LCD_ENTRYMODESET 0x04 //!< Sets the entry mode
|
||||
#define LCD_DISPLAYCONTROL \
|
||||
0x08 //!< Controls the display; does stuff like turning it off and on
|
||||
#define LCD_CURSORSHIFT 0x10 //!< Lets you move the cursor
|
||||
#define LCD_FUNCTIONSET \
|
||||
0x20 //!< Used to send the function to set to the display
|
||||
#define LCD_SETCGRAMADDR \
|
||||
0x40 //!< Used to set the CGRAM (character generator RAM) with characters
|
||||
#define LCD_SETDDRAMADDR 0x80 //!< Used to set the DDRAM (Display Data RAM)
|
||||
|
||||
// flags for display entry mode
|
||||
#define LCD_ENTRYRIGHT 0x00 //!< Used to set text to flow from right to left
|
||||
#define LCD_ENTRYLEFT 0x02 //!< Uset to set text to flow from left to right
|
||||
#define LCD_ENTRYSHIFTINCREMENT \
|
||||
0x01 //!< Used to 'right justify' text from the cursor
|
||||
#define LCD_ENTRYSHIFTDECREMENT \
|
||||
0x00 //!< Used to 'left justify' text from the cursor
|
||||
|
||||
// flags for display on/off control
|
||||
#define LCD_DISPLAYON 0x04 //!< Turns the display on
|
||||
#define LCD_DISPLAYOFF 0x00 //!< Turns the display off
|
||||
#define LCD_CURSORON 0x02 //!< Turns the cursor on
|
||||
#define LCD_CURSOROFF 0x00 //!< Turns the cursor off
|
||||
#define LCD_BLINKON 0x01 //!< Turns on the blinking cursor
|
||||
#define LCD_BLINKOFF 0x00 //!< Turns off the blinking cursor
|
||||
|
||||
// flags for display/cursor shift
|
||||
#define LCD_DISPLAYMOVE 0x08 //!< Flag for moving the display
|
||||
#define LCD_CURSORMOVE 0x00 //!< Flag for moving the cursor
|
||||
#define LCD_MOVERIGHT 0x04 //!< Flag for moving right
|
||||
#define LCD_MOVELEFT 0x00 //!< Flag for moving left
|
||||
|
||||
// flags for function set
|
||||
#define LCD_8BITMODE 0x10 //!< LCD 8 bit mode
|
||||
#define LCD_4BITMODE 0x00 //!< LCD 4 bit mode
|
||||
#define LCD_2LINE 0x08 //!< LCD 2 line mode
|
||||
#define LCD_1LINE 0x00 //!< LCD 1 line mode
|
||||
#define LCD_5x10DOTS 0x04 //!< 10 pixel high font mode
|
||||
#define LCD_5x8DOTS 0x00 //!< 8 pixel high font mode
|
||||
|
||||
/*!
|
||||
* @brief Main LiquidCrystal class
|
||||
*/
|
||||
class Adafruit_LiquidCrystal : public Print {
|
||||
public:
|
||||
/*!
|
||||
* @brief LiquidCrystal constructor for writing to a display
|
||||
* @param rs The reset data line
|
||||
* @param enable The enable data line
|
||||
* @param d0 The data line 0
|
||||
* @param d1 The data line 1
|
||||
* @param d2 The data line 2
|
||||
* @param d3 The data line 3
|
||||
* @param d4 The data line 4
|
||||
* @param d5 The data line 5
|
||||
* @param d6 The data line 6
|
||||
* @param d7 the data line 7
|
||||
*/
|
||||
Adafruit_LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1,
|
||||
uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5,
|
||||
uint8_t d6, uint8_t d7);
|
||||
/*!
|
||||
* @brief LiquidCrystal constructor for reading or writing to a display
|
||||
* @param rs The reset data line
|
||||
* @param rw The read write pin. Determines whether to read to or write from
|
||||
* display. Not necessary if only writing to display
|
||||
* @param enable The enable data line
|
||||
* @param d0 The data line 0
|
||||
* @param d1 The data line 1
|
||||
* @param d2 The data line 2
|
||||
* @param d3 The data line 3
|
||||
* @param d4 The data line 4
|
||||
* @param d5 The data line 5
|
||||
* @param d6 The data line 6
|
||||
* @param d7 the data line 7
|
||||
*/
|
||||
Adafruit_LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0,
|
||||
uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4,
|
||||
uint8_t d5, uint8_t d6, uint8_t d7);
|
||||
/*!
|
||||
* @brief LiquidCrystal constructor for reading or writing from a display
|
||||
* @param rs The reset data line
|
||||
* @param rw The read write pin. Determines whether to read to or write from
|
||||
* display. Not necessary if only writing to display
|
||||
* @param enable The enable data line
|
||||
* @param d0 The data line 0
|
||||
* @param d1 The data line 1
|
||||
* @param d2 The data line 2
|
||||
* @param d3 The data line 3
|
||||
*/
|
||||
Adafruit_LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0,
|
||||
uint8_t d1, uint8_t d2, uint8_t d3);
|
||||
/*!
|
||||
* @brief LiquidCrystal constructor for only writing to a display
|
||||
* @param rs The reset data line
|
||||
* @param enable The enable data line
|
||||
* @param d0 The data line 0
|
||||
* @param d1 The data line 1
|
||||
* @param d2 The data line 2
|
||||
* @param d3 The data line 3
|
||||
*/
|
||||
Adafruit_LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1,
|
||||
uint8_t d2, uint8_t d3);
|
||||
|
||||
/*!
|
||||
* @brief LiquidCrystal constructor for connection over i2c
|
||||
* @param i2cAddr Address of the display. Can use either actual I2C address
|
||||
* (0x20, 0x21, etc.) or offset from 0x20 base address (0, 1, etc.).
|
||||
* @param wire Optional pointer to Wire instance to use. Defaults to Wire.
|
||||
*/
|
||||
Adafruit_LiquidCrystal(uint8_t i2cAddr, TwoWire *wire = &Wire);
|
||||
/*!
|
||||
* @brief LiquidCrystal constructor for connection over SPI
|
||||
* @param data Data pin
|
||||
* @param clock Clock pin
|
||||
* @param latch latch pin
|
||||
*/
|
||||
Adafruit_LiquidCrystal(uint8_t data, uint8_t clock, uint8_t latch);
|
||||
|
||||
/*!
|
||||
* @brief Initializes the display
|
||||
* @param fourbitmode Sets the mode of the display, either 4 bit or 8 bit
|
||||
* @param rs The reset data line
|
||||
* @param rw The read write pin. Determines whether to read to or write from
|
||||
* display. Not necessary if only writing to display
|
||||
* @param enable The enable data line
|
||||
* @param d0 The data line 0
|
||||
* @param d1 The data line 1
|
||||
* @param d2 The data line 2
|
||||
* @param d3 The data line 3
|
||||
* @param d4 The data line 4
|
||||
* @param d5 The data line 5
|
||||
* @param d6 The data line 6
|
||||
* @param d7 the data line 7
|
||||
*/
|
||||
void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
|
||||
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4,
|
||||
uint8_t d5, uint8_t d6, uint8_t d7);
|
||||
|
||||
/*!
|
||||
* @brief Starts I2C connection with display
|
||||
* @param cols Sets the number of columns
|
||||
* @param rows Sets the number of rows
|
||||
* @param charsize Sets the charactersize
|
||||
* @return Returns true when connection was successful
|
||||
*/
|
||||
bool begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);
|
||||
|
||||
/*!
|
||||
* @brief High-level command to clear the display
|
||||
*/
|
||||
void clear();
|
||||
/*!
|
||||
* @brief High-level command to set the cursor position to zero
|
||||
*/
|
||||
void home();
|
||||
/*!
|
||||
* @brief High-level command to turn the display off quickly
|
||||
*/
|
||||
void noDisplay();
|
||||
/*!
|
||||
* @brief High-level command to turn the display on quickly
|
||||
*/
|
||||
void display();
|
||||
/*!
|
||||
* @brief High-level command to turn the blinking cursor off
|
||||
*/
|
||||
void noBlink();
|
||||
/*!
|
||||
* @brief High-level command to turn the blinking cursor on
|
||||
*/
|
||||
void blink();
|
||||
/*!
|
||||
* @brief High-level command to turn the underline cursor off
|
||||
*/
|
||||
void noCursor();
|
||||
/*!
|
||||
* @brief High-level command to turn the underline cursor on
|
||||
*/
|
||||
void cursor();
|
||||
/*!
|
||||
* @brief High-level command to scroll display left without changing the RAM
|
||||
*/
|
||||
void scrollDisplayLeft();
|
||||
/*!
|
||||
* @brief High-level command to scroll display right without changing the RAM
|
||||
*/
|
||||
void scrollDisplayRight();
|
||||
/*!
|
||||
* @brief High-level command to make text flow left to right
|
||||
*/
|
||||
void leftToRight();
|
||||
/*!
|
||||
* @brief High-level command to make text flow right to left
|
||||
*/
|
||||
void rightToLeft();
|
||||
/*!
|
||||
* @brief High-level command to 'right justify' text from the cursor
|
||||
*/
|
||||
void autoscroll();
|
||||
/*!
|
||||
* @brief High-level command to 'left justify' text from the cursor
|
||||
*/
|
||||
void noAutoscroll();
|
||||
|
||||
/*!
|
||||
* @brief High-level command to set the backlight, only if the LCD backpack is
|
||||
* used
|
||||
* @param value Set the backlight off/on, 0 = off, >0 = on.
|
||||
*/
|
||||
void setBacklight(uint8_t value);
|
||||
|
||||
/*!
|
||||
* @brief High-level command that creates custom character in CGRAM
|
||||
* @param location Location in cgram to fill
|
||||
* @param charmap[] Character map
|
||||
*/
|
||||
void createChar(uint8_t, uint8_t[]);
|
||||
/*!
|
||||
* @brief High-level command that sets the location of the cursor
|
||||
* @param col Column to set the cursor in
|
||||
* @param row Row to set the cursor in
|
||||
*/
|
||||
void setCursor(uint8_t, uint8_t);
|
||||
#if ARDUINO >= 100
|
||||
virtual size_t write(uint8_t);
|
||||
#else
|
||||
/*!
|
||||
* @brief Mid-level command that sends data to the display
|
||||
* @param value Data to send to the display
|
||||
*/
|
||||
virtual void write(uint8_t);
|
||||
#endif
|
||||
/*!
|
||||
* @brief Sends command to display
|
||||
* @param value Command to send
|
||||
*/
|
||||
void command(uint8_t);
|
||||
|
||||
private:
|
||||
void send(uint8_t value, boolean mode);
|
||||
void write4bits(uint8_t);
|
||||
void write8bits(uint8_t);
|
||||
void pulseEnable();
|
||||
void _digitalWrite(uint8_t, uint8_t);
|
||||
void _pinMode(uint8_t, uint8_t);
|
||||
|
||||
uint8_t _rs_pin; // LOW: command. HIGH: character.
|
||||
uint8_t _rw_pin; // LOW: write to LCD. HIGH: read from LCD.
|
||||
uint8_t _enable_pin; // activated by a HIGH pulse.
|
||||
uint8_t _data_pins[8];
|
||||
|
||||
uint8_t _displayfunction;
|
||||
uint8_t _displaycontrol;
|
||||
uint8_t _displaymode;
|
||||
|
||||
uint8_t _initialized;
|
||||
|
||||
uint8_t _numlines, _currline;
|
||||
|
||||
uint8_t _SPIclock, _SPIdata, _SPIlatch;
|
||||
uint8_t _SPIbuff;
|
||||
|
||||
uint8_t _i2cAddr;
|
||||
TwoWire *_wire;
|
||||
Adafruit_MCP23X08 _mcp;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user