1+ #ifdef ST7789
2+
3+ #include " ST7789Display.h"
4+
5+ bool ST7789Display::i2c_probe (TwoWire& wire, uint8_t addr) {
6+ return true ;
7+ /*
8+ wire.beginTransmission(addr);
9+ uint8_t error = wire.endTransmission();
10+ return (error == 0);
11+ */
12+ }
13+
14+ bool ST7789Display::begin () {
15+ if (!_isOn) {
16+ pinMode (PIN_TFT_VDD_CTL, OUTPUT);
17+ pinMode (PIN_TFT_LEDA_CTL, OUTPUT);
18+ digitalWrite (PIN_TFT_VDD_CTL, LOW);
19+ digitalWrite (PIN_TFT_LEDA_CTL, LOW);
20+ digitalWrite (PIN_TFT_RST, HIGH);
21+
22+ display.init (135 , 240 );
23+ display.setRotation (2 );
24+ display.setSPISpeed (40000000 );
25+ display.fillScreen (ST77XX_BLACK);
26+ display.setTextColor (ST77XX_WHITE);
27+ display.setTextSize (2 );
28+ display.cp437 (true ); // Use full 256 char 'Code Page 437' font
29+
30+ _isOn = true ;
31+ }
32+ return true ;
33+ }
34+
35+ void ST7789Display::turnOn () {
36+ ST7789Display::begin ();
37+ }
38+
39+ void ST7789Display::turnOff () {
40+ digitalWrite (PIN_TFT_VDD_CTL, HIGH);
41+ digitalWrite (PIN_TFT_LEDA_CTL, HIGH);
42+ digitalWrite (PIN_TFT_RST, LOW);
43+ // digitalWrite(PIN_TFT_VDD_CTL, LOW);
44+ // digitalWrite(PIN_TFT_LEDA_CTL, LOW);
45+ _isOn = false ;
46+ }
47+
48+ void ST7789Display::clear () {
49+ display.fillScreen (ST77XX_BLACK);
50+ }
51+
52+ void ST7789Display::startFrame (Color bkg) {
53+ display.fillScreen (0x00 );
54+ display.setTextColor (ST77XX_WHITE);
55+ display.setTextSize (2 );
56+ display.cp437 (true ); // Use full 256 char 'Code Page 437' font
57+ }
58+
59+ void ST7789Display::setTextSize (int sz) {
60+ display.setTextSize (sz);
61+ }
62+
63+ void ST7789Display::setColor (Color c) {
64+ switch (c) {
65+ case DisplayDriver::DARK :
66+ _color = ST77XX_BLACK;
67+ break ;
68+ case DisplayDriver::LIGHT :
69+ _color = ST77XX_WHITE;
70+ break ;
71+ case DisplayDriver::RED :
72+ _color = ST77XX_RED;
73+ break ;
74+ case DisplayDriver::GREEN :
75+ _color = ST77XX_GREEN;
76+ break ;
77+ case DisplayDriver::BLUE :
78+ _color = ST77XX_BLUE;
79+ break ;
80+ case DisplayDriver::YELLOW :
81+ _color = ST77XX_YELLOW;
82+ break ;
83+ case DisplayDriver::ORANGE :
84+ _color = ST77XX_ORANGE;
85+ break ;
86+ default :
87+ _color = ST77XX_WHITE;
88+ break ;
89+ }
90+ display.setTextColor (_color);
91+ }
92+
93+ void ST7789Display::setCursor (int x, int y) {
94+ display.setCursor (x, y);
95+ }
96+
97+ void ST7789Display::print (const char * str) {
98+ display.print (str);
99+ }
100+
101+ void ST7789Display::fillRect (int x, int y, int w, int h) {
102+ display.fillRect (x, y, w, h, _color);
103+ }
104+
105+ void ST7789Display::drawRect (int x, int y, int w, int h) {
106+ display.drawRect (x, y, w, h, _color);
107+ }
108+
109+ void ST7789Display::drawXbm (int x, int y, const uint8_t * bits, int w, int h) {
110+ display.drawBitmap (x, y, bits, w, h, _color);
111+ }
112+
113+ void ST7789Display::endFrame () {
114+ // display.display();
115+ }
116+
117+ #endif
0 commit comments