Justin Howard / Mbed 2 deprecated AdaFruit_RGBLCD

Dependencies:   AdaFruit_RGBLCDShield MCP23017 mbed RTclock

Dependents:   SX1276_GPS

Fork of MCP_test by Wim Huiskamp

Committer:
vtraveller
Date:
Sat Aug 02 14:16:30 2014 +0000
Revision:
5:6c9ee7e3a20c
Parent:
4:d70e37f6c6bd
Child:
6:a6be2aede8f2
Improved pull-up resisitor code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vtraveller 3:ed09f95739df 1 /***************************************************
vtraveller 3:ed09f95739df 2 This is a library for the Adafruit RGB 16x2 LCD Shield
vtraveller 3:ed09f95739df 3 Pick one up at the Adafruit shop!
vtraveller 3:ed09f95739df 4 ---------> http://http://www.adafruit.com/products/714
vtraveller 3:ed09f95739df 5
vtraveller 3:ed09f95739df 6 The shield uses I2C to communicate, 2 pins are required to
vtraveller 3:ed09f95739df 7 interface
vtraveller 3:ed09f95739df 8 Adafruit invests time and resources providing this open source code,
vtraveller 3:ed09f95739df 9 please support Adafruit and open-source hardware by purchasing
vtraveller 3:ed09f95739df 10 products from Adafruit!
vtraveller 3:ed09f95739df 11
vtraveller 3:ed09f95739df 12 Written by Limor Fried/Ladyada for Adafruit Industries.
vtraveller 3:ed09f95739df 13 BSD license, all text above must be included in any redistribution
vtraveller 3:ed09f95739df 14 ****************************************************/
vtraveller 3:ed09f95739df 15
vtraveller 3:ed09f95739df 16 #ifndef Adafruit_RGBLCDShield_h
vtraveller 3:ed09f95739df 17 #define Adafruit_RGBLCDShield_h
vtraveller 3:ed09f95739df 18
vtraveller 3:ed09f95739df 19 #include <inttypes.h>
vtraveller 4:d70e37f6c6bd 20 #include <MCP23017.h>
vtraveller 3:ed09f95739df 21
vtraveller 3:ed09f95739df 22 // commands
vtraveller 3:ed09f95739df 23 #define LCD_CLEARDISPLAY 0x01
vtraveller 3:ed09f95739df 24 #define LCD_RETURNHOME 0x02
vtraveller 3:ed09f95739df 25 #define LCD_ENTRYMODESET 0x04
vtraveller 3:ed09f95739df 26 #define LCD_DISPLAYCONTROL 0x08
vtraveller 3:ed09f95739df 27 #define LCD_CURSORSHIFT 0x10
vtraveller 3:ed09f95739df 28 #define LCD_FUNCTIONSET 0x20
vtraveller 3:ed09f95739df 29 #define LCD_SETCGRAMADDR 0x40
vtraveller 3:ed09f95739df 30 #define LCD_SETDDRAMADDR 0x80
vtraveller 3:ed09f95739df 31
vtraveller 3:ed09f95739df 32 // flags for display entry mode
vtraveller 3:ed09f95739df 33 #define LCD_ENTRYRIGHT 0x00
vtraveller 3:ed09f95739df 34 #define LCD_ENTRYLEFT 0x02
vtraveller 3:ed09f95739df 35 #define LCD_ENTRYSHIFTINCREMENT 0x01
vtraveller 3:ed09f95739df 36 #define LCD_ENTRYSHIFTDECREMENT 0x00
vtraveller 3:ed09f95739df 37
vtraveller 3:ed09f95739df 38 // flags for display on/off control
vtraveller 3:ed09f95739df 39 #define LCD_DISPLAYON 0x04
vtraveller 3:ed09f95739df 40 #define LCD_DISPLAYOFF 0x00
vtraveller 3:ed09f95739df 41 #define LCD_CURSORON 0x02
vtraveller 3:ed09f95739df 42 #define LCD_CURSOROFF 0x00
vtraveller 3:ed09f95739df 43 #define LCD_BLINKON 0x01
vtraveller 3:ed09f95739df 44 #define LCD_BLINKOFF 0x00
vtraveller 3:ed09f95739df 45
vtraveller 3:ed09f95739df 46 // flags for display/cursor shift
vtraveller 3:ed09f95739df 47 #define LCD_DISPLAYMOVE 0x08
vtraveller 3:ed09f95739df 48 #define LCD_CURSORMOVE 0x00
vtraveller 3:ed09f95739df 49 #define LCD_MOVERIGHT 0x04
vtraveller 3:ed09f95739df 50 #define LCD_MOVELEFT 0x00
vtraveller 3:ed09f95739df 51
vtraveller 3:ed09f95739df 52 // flags for function set
vtraveller 3:ed09f95739df 53 #define LCD_8BITMODE 0x10
vtraveller 3:ed09f95739df 54 #define LCD_4BITMODE 0x00
vtraveller 3:ed09f95739df 55 #define LCD_2LINE 0x08
vtraveller 3:ed09f95739df 56 #define LCD_1LINE 0x00
vtraveller 3:ed09f95739df 57 #define LCD_5x10DOTS 0x04
vtraveller 3:ed09f95739df 58 #define LCD_5x8DOTS 0x00
vtraveller 3:ed09f95739df 59
vtraveller 3:ed09f95739df 60 #define BUTTON_UP 0x08
vtraveller 3:ed09f95739df 61 #define BUTTON_DOWN 0x04
vtraveller 3:ed09f95739df 62 #define BUTTON_LEFT 0x10
vtraveller 3:ed09f95739df 63 #define BUTTON_RIGHT 0x02
vtraveller 3:ed09f95739df 64 #define BUTTON_SELECT 0x01
vtraveller 3:ed09f95739df 65
vtraveller 3:ed09f95739df 66 class Adafruit_RGBLCDShield
vtraveller 5:6c9ee7e3a20c 67 : public Serial // MBED was Print
vtraveller 3:ed09f95739df 68 {
vtraveller 3:ed09f95739df 69 public:
vtraveller 5:6c9ee7e3a20c 70 // Updated constructor
vtraveller 4:d70e37f6c6bd 71 Adafruit_RGBLCDShield(MCP23017 & inMCP);
vtraveller 3:ed09f95739df 72
vtraveller 3:ed09f95739df 73 void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
vtraveller 3:ed09f95739df 74 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
vtraveller 3:ed09f95739df 75 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
vtraveller 3:ed09f95739df 76
vtraveller 3:ed09f95739df 77 void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);
vtraveller 3:ed09f95739df 78
vtraveller 3:ed09f95739df 79 void clear();
vtraveller 3:ed09f95739df 80 void home();
vtraveller 3:ed09f95739df 81
vtraveller 3:ed09f95739df 82 void noDisplay();
vtraveller 3:ed09f95739df 83 void display();
vtraveller 3:ed09f95739df 84 void noBlink();
vtraveller 3:ed09f95739df 85 void blink();
vtraveller 3:ed09f95739df 86 void noCursor();
vtraveller 3:ed09f95739df 87 void cursor();
vtraveller 3:ed09f95739df 88 void scrollDisplayLeft();
vtraveller 3:ed09f95739df 89 void scrollDisplayRight();
vtraveller 3:ed09f95739df 90 void leftToRight();
vtraveller 3:ed09f95739df 91 void rightToLeft();
vtraveller 3:ed09f95739df 92 void autoscroll();
vtraveller 3:ed09f95739df 93 void noAutoscroll();
vtraveller 3:ed09f95739df 94
vtraveller 3:ed09f95739df 95 // only if using backpack
vtraveller 3:ed09f95739df 96 void setBacklight(uint8_t status);
vtraveller 3:ed09f95739df 97
vtraveller 3:ed09f95739df 98 void createChar(uint8_t, uint8_t[]);
vtraveller 3:ed09f95739df 99 void setCursor(uint8_t, uint8_t);
vtraveller 3:ed09f95739df 100 #if ARDUINO >= 100
vtraveller 4:d70e37f6c6bd 101 //virtual size_t write(uint8_t);
vtraveller 3:ed09f95739df 102 #else
vtraveller 4:d70e37f6c6bd 103 //virtual void write(uint8_t);
vtraveller 4:d70e37f6c6bd 104 virtual int _putc(int c);
vtraveller 3:ed09f95739df 105 #endif
vtraveller 3:ed09f95739df 106 void command(uint8_t);
vtraveller 3:ed09f95739df 107 uint8_t readButtons();
vtraveller 3:ed09f95739df 108
vtraveller 3:ed09f95739df 109 private:
vtraveller 3:ed09f95739df 110 void send(uint8_t, uint8_t);
vtraveller 3:ed09f95739df 111 void write4bits(uint8_t);
vtraveller 3:ed09f95739df 112 void write8bits(uint8_t);
vtraveller 3:ed09f95739df 113 void pulseEnable();
vtraveller 3:ed09f95739df 114 void _digitalWrite(uint8_t, uint8_t);
vtraveller 3:ed09f95739df 115 void _pinMode(uint8_t, uint8_t);
vtraveller 3:ed09f95739df 116
vtraveller 3:ed09f95739df 117 uint8_t _rs_pin; // LOW: command. HIGH: character.
vtraveller 3:ed09f95739df 118 uint8_t _rw_pin; // LOW: write to LCD. HIGH: read from LCD.
vtraveller 3:ed09f95739df 119 uint8_t _enable_pin; // activated by a HIGH pulse.
vtraveller 3:ed09f95739df 120 uint8_t _data_pins[8];
vtraveller 3:ed09f95739df 121 uint8_t _button_pins[5];
vtraveller 3:ed09f95739df 122 uint8_t _displayfunction;
vtraveller 3:ed09f95739df 123 uint8_t _displaycontrol;
vtraveller 3:ed09f95739df 124 uint8_t _displaymode;
vtraveller 3:ed09f95739df 125
vtraveller 3:ed09f95739df 126 uint8_t _initialized;
vtraveller 3:ed09f95739df 127
vtraveller 3:ed09f95739df 128 uint8_t _numlines,_currline;
vtraveller 3:ed09f95739df 129
vtraveller 3:ed09f95739df 130 uint8_t _i2cAddr;
vtraveller 4:d70e37f6c6bd 131 MCP23017 _i2c;
vtraveller 3:ed09f95739df 132 };
vtraveller 3:ed09f95739df 133
vtraveller 3:ed09f95739df 134 #endif