30 #include <avr/pgmspace.h> 31 #elif defined(ESP8266) 36 #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega1280__) || \ 37 defined(__AVR_ATmega2560__) || defined(ESP8266) || defined(ESP32) || \ 39 #define EEPROM_SUPPORTED 45 #include <Adafruit_GFX.h> 47 #ifndef _ADAFRUIT_RA8875_H 48 #define _ADAFRUIT_RA8875_H 51 #define CFG_EEPROM_TOUCHSCREEN_CAL_AN 0 52 #define CFG_EEPROM_TOUCHSCREEN_CAL_BN 4 53 #define CFG_EEPROM_TOUCHSCREEN_CAL_CN 8 54 #define CFG_EEPROM_TOUCHSCREEN_CAL_DN 12 55 #define CFG_EEPROM_TOUCHSCREEN_CAL_EN 16 56 #define CFG_EEPROM_TOUCHSCREEN_CAL_FN 20 57 #define CFG_EEPROM_TOUCHSCREEN_CAL_DIVIDER 24 58 #define CFG_EEPROM_TOUCHSCREEN_CALIBRATED 28 60 #if defined(EEPROM_SUPPORTED) 62 #if defined(__AVR_ATmega328P__) 63 #define EEPROMSIZE 1024 65 #elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) 67 #define EEPROMSIZE 4096 71 #define EEPROMSIZE 512 130 int32_t An, Bn, Cn, Dn, En,
Fn, Divider;
144 void softReset(
void);
145 void displayOn(
boolean on);
146 void sleep(
boolean sleep);
150 void textSetCursor(uint16_t
x, uint16_t
y);
151 void textColor(uint16_t foreColor, uint16_t bgColor);
152 void textTransparent(uint16_t foreColor);
153 void textEnlarge(uint8_t scale);
154 void textWrite(
const char *buffer, uint16_t len = 0);
155 void cursorBlink(uint8_t rate);
158 void graphicsMode(
void);
159 void setXY(uint16_t x, uint16_t y);
160 void pushPixels(uint32_t num, uint16_t p);
164 void drawPixel(int16_t x, int16_t y, uint16_t color);
165 void drawPixels(uint16_t *p, uint32_t count, int16_t x, int16_t y);
166 void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
167 void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
170 void fillScreen(uint16_t color);
171 void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
172 void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
173 void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
174 void drawCircle(int16_t x, int16_t y, int16_t r, uint16_t color);
175 void fillCircle(int16_t x, int16_t y, int16_t r, uint16_t color);
176 void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2,
177 int16_t y2, uint16_t color);
178 void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2,
179 int16_t y2, uint16_t color);
180 void drawEllipse(int16_t xCenter, int16_t yCenter, int16_t longAxis,
181 int16_t shortAxis, uint16_t color);
182 void fillEllipse(int16_t xCenter, int16_t yCenter, int16_t longAxis,
183 int16_t shortAxis, uint16_t color);
184 void drawCurve(int16_t xCenter, int16_t yCenter, int16_t longAxis,
185 int16_t shortAxis, uint8_t curvePart, uint16_t color);
186 void fillCurve(int16_t xCenter, int16_t yCenter, int16_t longAxis,
187 int16_t shortAxis, uint8_t curvePart, uint16_t color);
188 void drawRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r,
190 void fillRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r,
194 void setScrollWindow(int16_t x, int16_t y, int16_t w, int16_t h,
196 void scrollX(int16_t dist);
197 void scrollY(int16_t dist);
200 void GPIOX(
boolean on);
201 void PWM1config(
boolean on, uint8_t clock);
202 void PWM2config(
boolean on, uint8_t clock);
203 void PWM1out(uint8_t p);
204 void PWM2out(uint8_t p);
207 void touchEnable(
boolean on);
208 boolean touched(
void);
209 boolean touchRead(uint16_t *x, uint16_t *y);
212 #if defined(EEPROM_SUPPORTED) 215 uint32_t eepromReadS32(
int location);
216 void eepromWriteS32(
int location, int32_t value);
217 bool readCalibration(
int location,
tsMatrix_t *matrixPtr);
218 void writeCalibration(
int location,
tsMatrix_t *matrixPtr);
224 void writeReg(uint8_t reg, uint8_t val);
225 uint8_t readReg(uint8_t reg);
226 void writeData(uint8_t d);
227 uint8_t readData(
void);
228 void writeCommand(uint8_t d);
229 uint8_t readStatus(
void);
230 boolean waitPoll(uint8_t r, uint8_t f);
231 uint16_t width(
void);
232 uint16_t height(
void);
233 void setRotation(int8_t rotation);
234 int8_t getRotation(
void);
236 #ifndef USE_ADAFRUIT_GFX_FONTS 247 textWrite((
const char *)&b, 1);
261 virtual size_t write(
const uint8_t *buffer,
size_t size) {
262 textWrite((
const char *)buffer, size);
269 void initialize(
void);
272 void circleHelper(int16_t x, int16_t y, int16_t r, uint16_t color,
274 void rectHelper(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color,
276 void triangleHelper(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
277 int16_t x2, int16_t y2, uint16_t color,
bool filled);
278 void ellipseHelper(int16_t xCenter, int16_t yCenter, int16_t longAxis,
279 int16_t shortAxis, uint16_t color,
bool filled);
280 void curveHelper(int16_t xCenter, int16_t yCenter, int16_t longAxis,
281 int16_t shortAxis, uint8_t curvePart, uint16_t color,
283 void roundRectHelper(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r,
284 uint16_t color,
bool filled);
287 int16_t applyRotationX(int16_t x);
288 int16_t applyRotationY(int16_t y);
290 void swap(int16_t &x, int16_t &y) {
297 uint16_t _width, _height;
305 #define RA8875_BLACK 0x0000 306 #define RA8875_BLUE 0x001F 307 #define RA8875_RED 0xF800 308 #define RA8875_GREEN 0x07E0 309 #define RA8875_CYAN 0x07FF 310 #define RA8875_MAGENTA 0xF81F 311 #define RA8875_YELLOW 0xFFE0 312 #define RA8875_WHITE 0xFFFF 315 #define RA8875_DATAWRITE 0x00 316 #define RA8875_DATAREAD 0x40 317 #define RA8875_CMDWRITE 0x80 318 #define RA8875_CMDREAD 0xC0 321 #define RA8875_PWRR 0x01 322 #define RA8875_PWRR_DISPON 0x80 323 #define RA8875_PWRR_DISPOFF 0x00 324 #define RA8875_PWRR_SLEEP 0x02 325 #define RA8875_PWRR_NORMAL 0x00 326 #define RA8875_PWRR_SOFTRESET 0x01 328 #define RA8875_MRWC 0x02 330 #define RA8875_GPIOX 0xC7 332 #define RA8875_PLLC1 0x88 333 #define RA8875_PLLC1_PLLDIV2 0x80 334 #define RA8875_PLLC1_PLLDIV1 0x00 336 #define RA8875_PLLC2 0x89 337 #define RA8875_PLLC2_DIV1 0x00 338 #define RA8875_PLLC2_DIV2 0x01 339 #define RA8875_PLLC2_DIV4 0x02 340 #define RA8875_PLLC2_DIV8 0x03 341 #define RA8875_PLLC2_DIV16 0x04 342 #define RA8875_PLLC2_DIV32 0x05 343 #define RA8875_PLLC2_DIV64 0x06 344 #define RA8875_PLLC2_DIV128 0x07 346 #define RA8875_SYSR 0x10 347 #define RA8875_SYSR_8BPP 0x00 348 #define RA8875_SYSR_16BPP 0x0C 349 #define RA8875_SYSR_MCU8 0x00 350 #define RA8875_SYSR_MCU16 0x03 352 #define RA8875_PCSR 0x04 353 #define RA8875_PCSR_PDATR 0x00 354 #define RA8875_PCSR_PDATL 0x80 355 #define RA8875_PCSR_CLK 0x00 356 #define RA8875_PCSR_2CLK 0x01 357 #define RA8875_PCSR_4CLK 0x02 358 #define RA8875_PCSR_8CLK 0x03 360 #define RA8875_HDWR 0x14 362 #define RA8875_HNDFTR 0x15 363 #define RA8875_HNDFTR_DE_HIGH 0x00 364 #define RA8875_HNDFTR_DE_LOW 0x80 366 #define RA8875_HNDR 0x16 367 #define RA8875_HSTR 0x17 368 #define RA8875_HPWR 0x18 369 #define RA8875_HPWR_LOW 0x00 370 #define RA8875_HPWR_HIGH 0x80 372 #define RA8875_VDHR0 0x19 373 #define RA8875_VDHR1 0x1A 374 #define RA8875_VNDR0 0x1B 375 #define RA8875_VNDR1 0x1C 376 #define RA8875_VSTR0 0x1D 377 #define RA8875_VSTR1 0x1E 378 #define RA8875_VPWR 0x1F 379 #define RA8875_VPWR_LOW 0x00 380 #define RA8875_VPWR_HIGH 0x80 382 #define RA8875_HSAW0 0x30 383 #define RA8875_HSAW1 0x31 384 #define RA8875_VSAW0 0x32 385 #define RA8875_VSAW1 0x33 387 #define RA8875_HEAW0 0x34 388 #define RA8875_HEAW1 0x35 389 #define RA8875_VEAW0 0x36 390 #define RA8875_VEAW1 0x37 392 #define RA8875_MCLR 0x8E 393 #define RA8875_MCLR_START 0x80 394 #define RA8875_MCLR_STOP 0x00 395 #define RA8875_MCLR_READSTATUS 0x80 396 #define RA8875_MCLR_FULL 0x00 397 #define RA8875_MCLR_ACTIVE 0x40 399 #define RA8875_DCR 0x90 400 #define RA8875_DCR_LINESQUTRI_START 0x80 401 #define RA8875_DCR_LINESQUTRI_STOP 0x00 402 #define RA8875_DCR_LINESQUTRI_STATUS 0x80 403 #define RA8875_DCR_CIRCLE_START 0x40 404 #define RA8875_DCR_CIRCLE_STATUS 0x40 405 #define RA8875_DCR_CIRCLE_STOP 0x00 406 #define RA8875_DCR_FILL 0x20 407 #define RA8875_DCR_NOFILL 0x00 408 #define RA8875_DCR_DRAWLINE 0x00 409 #define RA8875_DCR_DRAWTRIANGLE 0x01 410 #define RA8875_DCR_DRAWSQUARE 0x10 412 #define RA8875_ELLIPSE 0xA0 413 #define RA8875_ELLIPSE_STATUS 0x80 415 #define RA8875_MWCR0 0x40 416 #define RA8875_MWCR0_GFXMODE 0x00 417 #define RA8875_MWCR0_TXTMODE 0x80 418 #define RA8875_MWCR0_CURSOR 0x40 419 #define RA8875_MWCR0_BLINK 0x20 421 #define RA8875_MWCR0_DIRMASK 0x0C 422 #define RA8875_MWCR0_LRTD 0x00 423 #define RA8875_MWCR0_RLTD 0x04 424 #define RA8875_MWCR0_TDLR 0x08 425 #define RA8875_MWCR0_DTLR 0x0C 427 #define RA8875_BTCR 0x44 428 #define RA8875_CURH0 0x46 429 #define RA8875_CURH1 0x47 430 #define RA8875_CURV0 0x48 431 #define RA8875_CURV1 0x49 433 #define RA8875_P1CR 0x8A 434 #define RA8875_P1CR_ENABLE 0x80 435 #define RA8875_P1CR_DISABLE 0x00 436 #define RA8875_P1CR_CLKOUT 0x10 437 #define RA8875_P1CR_PWMOUT 0x00 439 #define RA8875_P1DCR 0x8B 441 #define RA8875_P2CR 0x8C 442 #define RA8875_P2CR_ENABLE 0x80 443 #define RA8875_P2CR_DISABLE 0x00 444 #define RA8875_P2CR_CLKOUT 0x10 445 #define RA8875_P2CR_PWMOUT 0x00 447 #define RA8875_P2DCR 0x8D 449 #define RA8875_PWM_CLK_DIV1 0x00 450 #define RA8875_PWM_CLK_DIV2 0x01 451 #define RA8875_PWM_CLK_DIV4 0x02 452 #define RA8875_PWM_CLK_DIV8 0x03 453 #define RA8875_PWM_CLK_DIV16 0x04 454 #define RA8875_PWM_CLK_DIV32 0x05 455 #define RA8875_PWM_CLK_DIV64 0x06 456 #define RA8875_PWM_CLK_DIV128 0x07 457 #define RA8875_PWM_CLK_DIV256 0x08 458 #define RA8875_PWM_CLK_DIV512 0x09 459 #define RA8875_PWM_CLK_DIV1024 0x0A 460 #define RA8875_PWM_CLK_DIV2048 0x0B 461 #define RA8875_PWM_CLK_DIV4096 0x0C 462 #define RA8875_PWM_CLK_DIV8192 0x0D 463 #define RA8875_PWM_CLK_DIV16384 0x0E 464 #define RA8875_PWM_CLK_DIV32768 0x0F 466 #define RA8875_TPCR0 0x70 467 #define RA8875_TPCR0_ENABLE 0x80 468 #define RA8875_TPCR0_DISABLE 0x00 469 #define RA8875_TPCR0_WAIT_512CLK 0x00 470 #define RA8875_TPCR0_WAIT_1024CLK 0x10 471 #define RA8875_TPCR0_WAIT_2048CLK 0x20 472 #define RA8875_TPCR0_WAIT_4096CLK 0x30 473 #define RA8875_TPCR0_WAIT_8192CLK 0x40 474 #define RA8875_TPCR0_WAIT_16384CLK 0x50 475 #define RA8875_TPCR0_WAIT_32768CLK 0x60 476 #define RA8875_TPCR0_WAIT_65536CLK 0x70 477 #define RA8875_TPCR0_WAKEENABLE 0x08 478 #define RA8875_TPCR0_WAKEDISABLE 0x00 479 #define RA8875_TPCR0_ADCCLK_DIV1 0x00 480 #define RA8875_TPCR0_ADCCLK_DIV2 0x01 481 #define RA8875_TPCR0_ADCCLK_DIV4 0x02 482 #define RA8875_TPCR0_ADCCLK_DIV8 0x03 483 #define RA8875_TPCR0_ADCCLK_DIV16 0x04 484 #define RA8875_TPCR0_ADCCLK_DIV32 0x05 485 #define RA8875_TPCR0_ADCCLK_DIV64 0x06 486 #define RA8875_TPCR0_ADCCLK_DIV128 0x07 488 #define RA8875_TPCR1 0x71 489 #define RA8875_TPCR1_AUTO 0x00 490 #define RA8875_TPCR1_MANUAL 0x40 491 #define RA8875_TPCR1_VREFINT 0x00 492 #define RA8875_TPCR1_VREFEXT 0x20 493 #define RA8875_TPCR1_DEBOUNCE 0x04 494 #define RA8875_TPCR1_NODEBOUNCE 0x00 495 #define RA8875_TPCR1_IDLE 0x00 496 #define RA8875_TPCR1_WAIT 0x01 497 #define RA8875_TPCR1_LATCHX 0x02 498 #define RA8875_TPCR1_LATCHY 0x03 500 #define RA8875_TPXH 0x72 501 #define RA8875_TPYH 0x73 502 #define RA8875_TPXYL 0x74 504 #define RA8875_INTC1 0xF0 505 #define RA8875_INTC1_KEY 0x10 506 #define RA8875_INTC1_DMA 0x08 507 #define RA8875_INTC1_TP 0x04 508 #define RA8875_INTC1_BTE 0x02 510 #define RA8875_INTC2 0xF1 511 #define RA8875_INTC2_KEY 0x10 512 #define RA8875_INTC2_DMA 0x08 513 #define RA8875_INTC2_TP 0x04 514 #define RA8875_INTC2_BTE 0x02 516 #define RA8875_SCROLL_BOTH 0x00 517 #define RA8875_SCROLL_LAYER1 0x40 518 #define RA8875_SCROLL_LAYER2 0x80 519 #define RA8875_SCROLL_BUFFER 0xC0 Definition: Adafruit_RA8875.h:128
Definition: Adafruit_RA8875.h:85
int32_t x
Definition: Adafruit_RA8875.h:103
struct Point tsPoint_t
Nameless struct variable!
Definition: Adafruit_RA8875.h:102
Class that stores state and functions for interacting with the RA8875 display controller.
Definition: Adafruit_RA8875.h:139
Definition: Adafruit_RA8875.h:86
virtual size_t write(const uint8_t *buffer, size_t size)
Definition: Adafruit_RA8875.h:261
int32_t Fn
Definition: Adafruit_RA8875.h:130
virtual size_t write(uint8_t b)
Definition: Adafruit_RA8875.h:246
int32_t y
Definition: Adafruit_RA8875.h:104
Definition: Adafruit_RA8875.h:87
Definition: Adafruit_RA8875.h:88
RA8875sizes
Definition: Adafruit_RA8875.h:84