Skip to content

Commit ebe3387

Browse files
committed
Add Qualia S3 Product Demo
1 parent 150c097 commit ebe3387

3 files changed

Lines changed: 239 additions & 0 deletions

File tree

Qualia/Qualia_S3_Product_Demo/.none.test.only

Whitespace-only changes.
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#include <Arduino_GFX_Library.h>
2+
#include "inits.h"
3+
#include "Adafruit_FT6206.h"
4+
5+
Arduino_XCA9554SWSPI *expander = new Arduino_XCA9554SWSPI(
6+
PCA_TFT_RESET, PCA_TFT_CS, PCA_TFT_SCK, PCA_TFT_MOSI,
7+
&Wire, 0x3F);
8+
9+
Arduino_ESP32RGBPanel *rgbpanel = new Arduino_ESP32RGBPanel(
10+
TFT_DE, TFT_VSYNC, TFT_HSYNC, TFT_PCLK,
11+
TFT_R1, TFT_R2, TFT_R3, TFT_R4, TFT_R5,
12+
TFT_G0, TFT_G1, TFT_G2, TFT_G3, TFT_G4, TFT_G5,
13+
TFT_B1, TFT_B2, TFT_B3, TFT_B4, TFT_B5,
14+
1 /* hync_polarity */, 46 /* hsync_front_porch */, 2 /* hsync_pulse_width */, 44 /* hsync_back_porch */,
15+
1 /* vsync_polarity */, 50 /* vsync_front_porch */, 16 /* vsync_pulse_width */, 16 /* vsync_back_porch */);
16+
17+
Arduino_RGB_Display *gfx = new Arduino_RGB_Display(
18+
/* 3.4" square */
19+
// 480 /* width */, 480 /* height */, rgbpanel, 0 /* rotation */, true /* auto_flush */,
20+
// expander, GFX_NOT_DEFINED /* RST */, tl034wvs05_b1477a_init_operations, sizeof(tl034wvs05_b1477a_init_operations));
21+
/* 3.2" bar */
22+
// 320 /* width */, 820 /* height */, rgbpanel, 0 /* rotation */, true /* auto_flush */,
23+
// expander, GFX_NOT_DEFINED /* RST */, tl032fwv01_init_operations, sizeof(tl032fwv01_init_operations));
24+
/* 4.0" 720x720 square */
25+
// 720 /* width */, 720 /* height */, rgbpanel, 0 /* rotation */, true /* auto_flush */,
26+
// expander, GFX_NOT_DEFINED /* RST */, NULL, 0);
27+
/* 4.0" 480x480 square */
28+
// 480 /* width */, 480 /* height */, rgbpanel, 0 /* rotation */, true /* auto_flush */,
29+
// expander, GFX_NOT_DEFINED /* RST */, tl040wvs03_init_operations, sizeof(tl040wvs03_init_operations));
30+
// 2.1" round
31+
480 /* width */, 480 /* height */, rgbpanel, 0 /* rotation */, true /* auto_flush */,
32+
expander, GFX_NOT_DEFINED /* RST */, TL021WVC02_init_operations, sizeof(TL021WVC02_init_operations));
33+
34+
35+
Adafruit_FT6206 ctp = Adafruit_FT6206(); // This library also supports FT6336U!
36+
#define I2C_TOUCH_ADDR 0x15
37+
bool touchOK = false;
38+
39+
void setup(void)
40+
{
41+
//while (!Serial) delay(100);
42+
43+
#ifdef GFX_EXTRA_PRE_INIT
44+
GFX_EXTRA_PRE_INIT();
45+
#endif
46+
47+
Serial.println("Starting touch paint");
48+
49+
// Init Display
50+
Wire.setClock(400000); // speed up I2C
51+
if (!gfx->begin()) {
52+
Serial.println("gfx->begin() failed!");
53+
while (1) yield();
54+
}
55+
56+
gfx->fillScreen(BLACK);
57+
58+
expander->pinMode(PCA_TFT_BACKLIGHT, OUTPUT);
59+
expander->digitalWrite(PCA_TFT_BACKLIGHT, HIGH);
60+
61+
Serial.println("Hello!");
62+
gfx->fillScreen(BLACK);
63+
gfx->setCursor(100, gfx->height() / 2 - 75);
64+
gfx->setTextSize(5);
65+
gfx->setTextColor(WHITE);
66+
gfx->println("Hello World!");
67+
68+
gfx->setCursor(100, gfx->height() / 2 - 25);
69+
gfx->setTextColor(RED);
70+
gfx->println("RED");
71+
72+
gfx->setCursor(100, gfx->height() / 2 + 25);
73+
gfx->setTextColor(GREEN);
74+
gfx->println("GREEN");
75+
76+
gfx->setCursor(100, gfx->height() / 2 + 75);
77+
gfx->setTextColor(BLUE);
78+
gfx->println("BLUE");
79+
80+
if (!ctp.begin(0, &Wire, I2C_TOUCH_ADDR)) {
81+
//gfx->setTextColor(RED);
82+
//gfx->println("\nTouch not found");
83+
Serial.println("No touchscreen found");
84+
touchOK = false;
85+
} else {
86+
gfx->setTextColor(WHITE);
87+
gfx->println("\nTouch found");
88+
Serial.println("Touchscreen found");
89+
touchOK = true;
90+
}
91+
92+
expander->pinMode(PCA_BUTTON_UP, INPUT);
93+
expander->pinMode(PCA_BUTTON_DOWN, INPUT);
94+
}
95+
96+
void loop()
97+
{
98+
if (touchOK && ctp.touched()) {
99+
TS_Point p = ctp.getPoint(0);
100+
Serial.printf("(%d, %d)\n", p.x, p.y);
101+
gfx->fillRect(p.x, p.y, 5, 5, WHITE);
102+
}
103+
104+
// use the buttons to turn off
105+
if (! expander->digitalRead(PCA_BUTTON_DOWN)) {
106+
expander->digitalWrite(PCA_TFT_BACKLIGHT, LOW);
107+
}
108+
// and on the backlight
109+
if (! expander->digitalRead(PCA_BUTTON_UP)) {
110+
expander->digitalWrite(PCA_TFT_BACKLIGHT, HIGH);
111+
}
112+
113+
}
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
static const uint8_t square34_init_operations[] = {
2+
BEGIN_WRITE,
3+
4+
WRITE_COMMAND_8, 0xFF,
5+
WRITE_BYTES, 5,
6+
0x77, 0x01, 0x00, 0x00, 0x13,
7+
WRITE_C8_D8, 0xEF, 0x08,
8+
9+
WRITE_COMMAND_8, 0xFF,
10+
WRITE_BYTES, 5,
11+
0x77, 0x01, 0x00, 0x00, 0x10,
12+
13+
WRITE_C8_D16, 0xC0, 0x3B, 0x00,
14+
WRITE_C8_D16, 0xC1, 0x12, 0x0A,
15+
WRITE_C8_D16, 0xC2, 0x07, 0x03,
16+
WRITE_C8_D8, 0xC3, 0x02, //80£ºHV mode
17+
WRITE_C8_D8, 0xCC, 0x10,
18+
WRITE_C8_D8, 0xCD, 0x08,
19+
20+
WRITE_COMMAND_8, 0xB0,
21+
WRITE_BYTES, 16,
22+
0x0F, 0x11, 0x17, 0x15,
23+
0x15, 0x09, 0x0C, 0x08,
24+
0x08, 0x26, 0x04, 0x59,
25+
0x16, 0x66, 0x2D, 0x1F,
26+
WRITE_COMMAND_8, 0xB1,
27+
WRITE_BYTES, 16,
28+
0x0F, 0x11, 0x17, 0x15,
29+
0x15, 0x09, 0x0C, 0x08,
30+
0x08, 0x26, 0x04, 0x59,
31+
0x16, 0x66, 0x2D, 0x1F,
32+
33+
WRITE_COMMAND_8, 0xFF,
34+
WRITE_BYTES, 5,
35+
0x77, 0x01, 0x00, 0x00, 0x11,
36+
37+
WRITE_C8_D8, 0xB0, 0x6D,
38+
WRITE_C8_D8, 0xB1, 0x3A, //30/47
39+
WRITE_C8_D8, 0xB2, 0x01,
40+
WRITE_C8_D8, 0xB3, 0x80,
41+
WRITE_C8_D8, 0xB5, 0x49,
42+
WRITE_C8_D8, 0xB7, 0x85,
43+
WRITE_C8_D8, 0xB8, 0x20,
44+
WRITE_C8_D8, 0xC1, 0x78,
45+
WRITE_C8_D8, 0xC2, 0x78,
46+
WRITE_C8_D8, 0xD0, 0x88,
47+
48+
WRITE_COMMAND_8, 0xE0,
49+
WRITE_BYTES, 3, 0x00, 0x00, 0x02,
50+
51+
WRITE_COMMAND_8, 0xE1,
52+
WRITE_BYTES, 11,
53+
0x07, 0x00, 0x09, 0x00,
54+
0x06, 0x00, 0x08, 0x00,
55+
0x00, 0x33, 0x33,
56+
57+
WRITE_COMMAND_8, 0xE2,
58+
WRITE_BYTES, 13,
59+
0x11, 0x11, 0x33, 0x33,
60+
0xF6, 0x00, 0xF6, 0x00,
61+
0xF6, 0x00, 0xF6, 0x00,
62+
0x00,
63+
64+
WRITE_COMMAND_8, 0xE3,
65+
WRITE_BYTES, 4,
66+
0x00, 0x00, 0x11, 0x11,
67+
68+
WRITE_C8_D16, 0xE4, 0x44, 0x44,
69+
70+
WRITE_COMMAND_8, 0xE5,
71+
WRITE_BYTES, 16,
72+
0x0F, 0xF3, 0x3D, 0xFF,
73+
0x11, 0xF5, 0x3D, 0xFF,
74+
0x0B, 0xEF, 0x3D, 0xFF,
75+
0x0D, 0xF1, 0x3D, 0xFF,
76+
77+
WRITE_COMMAND_8, 0xE6,
78+
WRITE_BYTES, 4,
79+
0x00, 0x00, 0x11, 0x11,
80+
81+
WRITE_C8_D16, 0xE7, 0x44, 0x44,
82+
83+
WRITE_COMMAND_8, 0xE8,
84+
WRITE_BYTES, 16,
85+
0x0E, 0xF2, 0x3D, 0xFF,
86+
0x10, 0xF4, 0x3D, 0xFF,
87+
0x0A, 0xEE, 0x3D, 0xFF,
88+
0x0C, 0xF0, 0x3D, 0xFF,
89+
90+
WRITE_C8_D16, 0xE9, 0x36, 0x00,
91+
92+
WRITE_COMMAND_8, 0xEB,
93+
WRITE_BYTES, 7,
94+
0x00, 0x01, 0xE4, 0xE4,
95+
0x44, 0xAA, 0x10,
96+
97+
WRITE_C8_D16, 0xEC, 0x3C, 0x00,
98+
99+
WRITE_COMMAND_8, 0xED,
100+
WRITE_BYTES, 16,
101+
0xFF, 0x45, 0x67, 0xFA,
102+
0x01, 0x2B, 0xCF, 0xFF,
103+
0xFF, 0xFC, 0xB2, 0x10,
104+
0xAF, 0x76, 0x54, 0xFF,
105+
106+
WRITE_COMMAND_8, 0xEF,
107+
WRITE_BYTES, 6,
108+
0x10, 0x0D, 0x04, 0x08, 0x3F, 0x1F,
109+
110+
WRITE_COMMAND_8, 0xFF,
111+
WRITE_BYTES, 5,
112+
0x77, 0x01, 0x00, 0x00, 0x00,
113+
114+
WRITE_C8_D8, 0x35, 0x00,
115+
WRITE_C8_D8, 0x3A, 0x66,
116+
117+
WRITE_COMMAND_8, 0x11, // Sleep Out
118+
END_WRITE,
119+
120+
DELAY, 120,
121+
122+
BEGIN_WRITE,
123+
WRITE_COMMAND_8, 0x29, // Display On
124+
END_WRITE,
125+
126+
DELAY, 50};

0 commit comments

Comments
 (0)