diff options
author | Cristian Maglie <c.maglie@bug.st> | 2013-06-01 23:16:02 +0200 |
---|---|---|
committer | Cristian Maglie <c.maglie@bug.st> | 2013-06-01 23:16:02 +0200 |
commit | 177ad96f866714a4962be57f69cd3d5a6334cde1 (patch) | |
tree | 1072239986340d6a239adac924eddf2e1d1ca566 /libraries/Robot_Control/Arduino_LCD.h | |
parent | 6cff36ac5e85c74bcb45cc53491ad69d64520b36 (diff) | |
parent | d90fcca5839d13d57ed527d4009b78d22dafbde7 (diff) |
Merge branch 'merge-1.0.5' into ide-1.5.x-discovery
Diffstat (limited to 'libraries/Robot_Control/Arduino_LCD.h')
-rw-r--r-- | libraries/Robot_Control/Arduino_LCD.h | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/libraries/Robot_Control/Arduino_LCD.h b/libraries/Robot_Control/Arduino_LCD.h new file mode 100644 index 0000000..a518133 --- /dev/null +++ b/libraries/Robot_Control/Arduino_LCD.h @@ -0,0 +1,141 @@ +/*************************************************** + This is a library for the Adafruit 1.8" SPI display. + This library works with the Adafruit 1.8" TFT Breakout w/SD card + ----> http://www.adafruit.com/products/358 + as well as Adafruit raw 1.8" TFT display + ----> http://www.adafruit.com/products/618 + + Check out the links above for our tutorials and wiring diagrams + These displays use SPI to communicate, 4 or 5 pins are required to + interface (RST is optional) + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + MIT license, all text above must be included in any redistribution + ****************************************************/ + +#ifndef _ARDUINO_LCDH_ +#define _ARDUINO_LCDH_ + +#if ARDUINO >= 100 + #include "Arduino.h" + #include "Print.h" +#else + #include "WProgram.h" +#endif +#include "Adafruit_GFX.h" +//#include <avr/pgmspace.h> + +// some flags for initR() :( +#define INITR_GREENTAB 0x0 +#define INITR_REDTAB 0x1 + +#define ILI9163C_TFTWIDTH 128 +#define ILI9163C_TFTHEIGHT 160 + +#define ILI9163C_NOP 0x00 +#define ILI9163C_SWRESET 0x01 +#define ILI9163C_RDDID 0x04 +#define ILI9163C_RDDST 0x09 + +#define ILI9163C_SLPIN 0x10 +#define ILI9163C_SLPOUT 0x11 +#define ILI9163C_PTLON 0x12 +#define ILI9163C_NORON 0x13 + +#define ILI9163C_INVOFF 0x20 +#define ILI9163C_INVON 0x21 +#define ILI9163C_DISPOFF 0x28 +#define ILI9163C_DISPON 0x29 +#define ILI9163C_CASET 0x2A +#define ILI9163C_RASET 0x2B +#define ILI9163C_RAMWR 0x2C +#define ILI9163C_RAMRD 0x2E + +#define ILI9163C_PTLAR 0x30 +#define ILI9163C_COLMOD 0x3A // this is interface pixel format, this might be the issue +#define ILI9163C_MADCTL 0x36 + +#define ILI9163C_FRMCTR1 0xB1 +#define ILI9163C_FRMCTR2 0xB2 +#define ILI9163C_FRMCTR3 0xB3 +#define ILI9163C_INVCTR 0xB4 +#define ILI9163C_DISSET5 0xB6 + +#define ILI9163C_PWCTR1 0xC0 +#define ILI9163C_PWCTR2 0xC1 +#define ILI9163C_PWCTR3 0xC2 +#define ILI9163C_PWCTR4 0xC3 +#define ILI9163C_PWCTR5 0xC4 +#define ILI9163C_VMCTR1 0xC5 + +#define ILI9163C_RDID1 0xDA +#define ILI9163C_RDID2 0xDB +#define ILI9163C_RDID3 0xDC +#define ILI9163C_RDID4 0xDD + +#define ILI9163C_PWCTR6 0xFC + +#define ILI9163C_GMCTRP1 0xE0 +#define ILI9163C_GMCTRN1 0xE1 + +// Color definitions +#define ILI9163C_BLACK 0x0000 +#define ILI9163C_BLUE 0x001F +#define ILI9163C_RED 0xF800 +#define ILI9163C_GREEN 0x07E0 +#define ILI9163C_CYAN 0x07FF +#define ILI9163C_MAGENTA 0xF81F +#define ILI9163C_YELLOW 0xFFE0 +#define ILI9163C_WHITE 0xFFFF + + +class Arduino_LCD : public Adafruit_GFX { + + public: + + Arduino_LCD(uint8_t CS, uint8_t RS, uint8_t SID, uint8_t SCLK, uint8_t RST); + Arduino_LCD(uint8_t CS, uint8_t RS, uint8_t RST); + + void initB(void), // for ST7735B displays + initR(uint8_t options = INITR_GREENTAB), // for ST7735R + setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1), + pushColor(uint16_t color), + fillScreen(uint16_t color), + drawPixel(int16_t x, int16_t y, uint16_t color), + drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), + drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), + fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color), + setRotation(uint8_t r), + invertDisplay(boolean i); + uint16_t Color565(uint8_t r, uint8_t g, uint8_t b); + + /* These are not for current use, 8-bit protocol only! + uint8_t readdata(void), + readcommand8(uint8_t); + uint16_t readcommand16(uint8_t); + uint32_t readcommand32(uint8_t); + void dummyclock(void); + */ + + private: + + void spiwrite(uint8_t), + writecommand(uint8_t c), + writedata(uint8_t d), +// commandList(prog_uchar *addr), +// commonInit(prog_uchar *cmdList); + commandList(uint8_t *addr), + commonInit(uint8_t *cmdList); +//uint8_t spiread(void); + + boolean hwSPI; + volatile uint8_t *dataport, *clkport, *csport, *rsport; + uint8_t _cs, _rs, _rst, _sid, _sclk, + datapinmask, clkpinmask, cspinmask, rspinmask, + colstart, rowstart; // some displays need this changed +}; + +#endif |