-
Notifications
You must be signed in to change notification settings - Fork 7
/
GC9A01_demo.ino
130 lines (108 loc) · 2.87 KB
/
GC9A01_demo.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <SPI.h>
#include "GC9A01.h"
#define RES 8
#define DC 9
#define CS 10
void GC9A01_set_reset(uint8_t val) {
digitalWrite(RES, val);
}
void GC9A01_set_data_command(uint8_t val) {
digitalWrite(DC, val);
}
void GC9A01_set_chip_select(uint8_t val) {
digitalWrite(CS, val);
}
void GC9A01_spi_tx(uint8_t *data, size_t len) {
while (len--) {
SPI.transfer(*data);
data++;
}
}
void GC9A01_delay(uint16_t ms) {
delay(ms);
}
void setup() {
pinMode(RES, OUTPUT);
pinMode(DC, OUTPUT);
pinMode(CS, OUTPUT);
SPI.begin();
GC9A01_init();
struct GC9A01_frame frame = {{0,0},{239,239}};
GC9A01_set_frame(frame);
}
void loop() {
uint8_t color[3];
// Triangle
color[0] = 0xFF;
color[1] = 0xFF;
for (int x = 0; x < 240; x++) {
for (int y = 0; y < 240; y++) {
if (x < y) {
color[2] = 0xFF;
} else {
color[2] = 0x00;
}
if (x == 0 && y == 0) {
GC9A01_write(color, sizeof(color));
} else {
GC9A01_write_continue(color, sizeof(color));
}
}
}
delay(1000);
// Rainbow
float frequency = 0.026;
for (int x = 0; x < 240; x++) {
color[0] = sin(frequency*x + 0) * 127 + 128;
color[1] = sin(frequency*x + 2) * 127 + 128;
color[2] = sin(frequency*x + 4) * 127 + 128;
for (int y = 0; y < 240; y++) {
if (x == 0 && y == 0) {
GC9A01_write(color, sizeof(color));
} else {
GC9A01_write_continue(color, sizeof(color));
}
}
}
delay(1000);
// Checkerboard
for (int x = 0; x < 240; x++) {
for (int y = 0; y < 240; y++) {
if ((x / 10) % 2 == (y / 10) % 2) {
color[0] = 0xFF;
color[1] = 0xFF;
color[2] = 0xFF;
} else {
color[0] = 0x00;
color[1] = 0x00;
color[2] = 0x00;
}
if (x == 0 && y == 0) {
GC9A01_write(color, sizeof(color));
} else {
GC9A01_write_continue(color, sizeof(color));
}
}
}
delay(1000);
// Swiss flag
color[0] = 0xFF;
for (int x = 0; x < 240; x++) {
for (int y = 0; y < 240; y++) {
if ((x >= 1*48 && x < 4*48 && y >= 2*48 && y < 3*48) ||
(x >= 2*48 && x < 3*48 && y >= 1*48 && y < 4*48)) {
color[1] = 0xFF;
color[2] = 0xFF;
} else {
color[1] = 0x00;
color[2] = 0x00;
}
if (x == 0 && y == 0) {
GC9A01_write(color, sizeof(color));
} else {
GC9A01_write_continue(color, sizeof(color));
}
}
}
delay(1000);
}