#include <font_Arial.h>
#include <font_ArialBoldX.h>
#include <ILI9341_t3n.h>
#include <SPIN.h>
#include "SPI.h"
#define KURTS_FLEXI
#ifdef KURTS_FLEXI
#define TFT_DC 22
#define TFT_CS 15
#define TFT_RST -1
#define TFT_SCK 14
#define TFT_MISO 12
#define TFT_MOSI 7
#define DEBUG_PIN 13
#else
#define TFT_DC 9
#define TFT_CS 10
#define TFT_RST 7
#define TFT_SCK 13
#define TFT_MISO 12
#define TFT_MOSI 11
#endif
ILI9341_t3n tft = ILI9341_t3n(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCK, TFT_MISO, &SPIN);
Adafruit_GFX_Button button;
uint8_t draw_opaque = 0;
void setup() {
while (!Serial && (millis() < 4000)) ;
Serial.begin(115200);
tft.begin();
tft.fillScreen(ILI9341_BLACK);
// read diagnostics (optional but can help debug problems)
uint8_t x = tft.readcommand8(ILI9341_RDMODE);
Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDMADCTL);
Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDPIXFMT);
Serial.print("Pixel Format: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDIMGFMT);
Serial.print("Image Format: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDSELFDIAG);
Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX);
#ifdef DEBUG_PIN
pinMode(DEBUG_PIN, OUTPUT);
#endif
button.initButton(&tft, 200, 100, 100, 40, ILI9341_GREEN, ILI9341_YELLOW, ILI9341_RED, "UP", 1);
drawTextScreen(draw_opaque);
}
uint16_t pixel_data[2500];
void drawTextScreen(bool fOpaque) {
Serial.printf("Draw Opaque %d ", fOpaque); Serial.flush();
uint32_t start_time = millis();
tft.fillScreen(fOpaque ? ILI9341_RED : ILI9341_BLACK);
tft.setRotation(3);
tft.setFont(Arial_40_Bold);
if (fOpaque)
tft.setTextColor(ILI9341_WHITE, fOpaque ? ILI9341_BLACK : ILI9341_RED);
else
tft.setTextColor(ILI9341_WHITE);
tft.setCursor(0, 5);
tft.println("AbCdEfGhIj");
tft.setFont(Arial_28_Bold);
tft.println("0123456789!@#$");
tft.setFont(Arial_20_Bold);
tft.println("abcdefghijklmnopq");
tft.setFont(Arial_14_Bold);
tft.println("ABCDEFGHIJKLMNOPQRST");
tft.setFont(Arial_10_Bold);
tft.println("0123456789zyxwvutuvwxyzABCD");
tft.setFont(Arial_8_Bold);
tft.println("ABCDEFGHILKLMNOPQRSTUVWXYZ0123456789");
Serial.println(millis() - start_time, DEC);
}
void loop(void) {
// See if any text entered
if (Serial.read() != -1) {
while (Serial.read() != -1) ;
draw_opaque = draw_opaque? 0 : 1;
drawTextScreen(draw_opaque);
}
}