mirror of https://github.com/meshcore-dev/MeshCore
committed by
GitHub
15 changed files with 228 additions and 33 deletions
@ -0,0 +1,117 @@ |
|||||
|
#ifdef ST7789 |
||||
|
|
||||
|
#include "ST7789Display.h" |
||||
|
|
||||
|
bool ST7789Display::i2c_probe(TwoWire& wire, uint8_t addr) { |
||||
|
return true; |
||||
|
/*
|
||||
|
wire.beginTransmission(addr); |
||||
|
uint8_t error = wire.endTransmission(); |
||||
|
return (error == 0); |
||||
|
*/ |
||||
|
} |
||||
|
|
||||
|
bool ST7789Display::begin() { |
||||
|
if(!_isOn) { |
||||
|
pinMode(PIN_TFT_VDD_CTL, OUTPUT); |
||||
|
pinMode(PIN_TFT_LEDA_CTL, OUTPUT); |
||||
|
digitalWrite(PIN_TFT_VDD_CTL, LOW); |
||||
|
digitalWrite(PIN_TFT_LEDA_CTL, LOW); |
||||
|
digitalWrite(PIN_TFT_RST, HIGH); |
||||
|
|
||||
|
display.init(135, 240); |
||||
|
display.setRotation(2); |
||||
|
display.setSPISpeed(40000000); |
||||
|
display.fillScreen(ST77XX_BLACK); |
||||
|
display.setTextColor(ST77XX_WHITE); |
||||
|
display.setTextSize(2); |
||||
|
display.cp437(true); // Use full 256 char 'Code Page 437' font
|
||||
|
|
||||
|
_isOn = true; |
||||
|
} |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::turnOn() { |
||||
|
ST7789Display::begin(); |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::turnOff() { |
||||
|
digitalWrite(PIN_TFT_VDD_CTL, HIGH); |
||||
|
digitalWrite(PIN_TFT_LEDA_CTL, HIGH); |
||||
|
digitalWrite(PIN_TFT_RST, LOW); |
||||
|
// digitalWrite(PIN_TFT_VDD_CTL, LOW);
|
||||
|
// digitalWrite(PIN_TFT_LEDA_CTL, LOW);
|
||||
|
_isOn = false; |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::clear() { |
||||
|
display.fillScreen(ST77XX_BLACK); |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::startFrame(Color bkg) { |
||||
|
display.fillScreen(0x00); |
||||
|
display.setTextColor(ST77XX_WHITE); |
||||
|
display.setTextSize(2); |
||||
|
display.cp437(true); // Use full 256 char 'Code Page 437' font
|
||||
|
} |
||||
|
|
||||
|
void ST7789Display::setTextSize(int sz) { |
||||
|
display.setTextSize(sz); |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::setColor(Color c) { |
||||
|
switch (c) { |
||||
|
case DisplayDriver::DARK : |
||||
|
_color = ST77XX_BLACK; |
||||
|
break; |
||||
|
case DisplayDriver::LIGHT : |
||||
|
_color = ST77XX_WHITE; |
||||
|
break; |
||||
|
case DisplayDriver::RED : |
||||
|
_color = ST77XX_RED; |
||||
|
break; |
||||
|
case DisplayDriver::GREEN : |
||||
|
_color = ST77XX_GREEN; |
||||
|
break; |
||||
|
case DisplayDriver::BLUE : |
||||
|
_color = ST77XX_BLUE; |
||||
|
break; |
||||
|
case DisplayDriver::YELLOW : |
||||
|
_color = ST77XX_YELLOW; |
||||
|
break; |
||||
|
case DisplayDriver::ORANGE : |
||||
|
_color = ST77XX_ORANGE; |
||||
|
break; |
||||
|
default: |
||||
|
_color = ST77XX_WHITE; |
||||
|
break; |
||||
|
} |
||||
|
display.setTextColor(_color); |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::setCursor(int x, int y) { |
||||
|
display.setCursor(x, y); |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::print(const char* str) { |
||||
|
display.print(str); |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::fillRect(int x, int y, int w, int h) { |
||||
|
display.fillRect(x, y, w, h, _color); |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::drawRect(int x, int y, int w, int h) { |
||||
|
display.drawRect(x, y, w, h, _color); |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::drawXbm(int x, int y, const uint8_t* bits, int w, int h) { |
||||
|
display.drawBitmap(x, y, bits, w, h, _color); |
||||
|
} |
||||
|
|
||||
|
void ST7789Display::endFrame() { |
||||
|
// display.display();
|
||||
|
} |
||||
|
|
||||
|
#endif |
||||
@ -0,0 +1,33 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "DisplayDriver.h" |
||||
|
#include <Wire.h> |
||||
|
#include <SPI.h> |
||||
|
#include <Adafruit_GFX.h> |
||||
|
#include <Adafruit_ST7789.h> |
||||
|
|
||||
|
class ST7789Display : public DisplayDriver { |
||||
|
Adafruit_ST7789 display; |
||||
|
bool _isOn; |
||||
|
uint16_t _color; |
||||
|
|
||||
|
bool i2c_probe(TwoWire& wire, uint8_t addr); |
||||
|
public: |
||||
|
ST7789Display() : DisplayDriver(135, 240), display(&SPI1, PIN_TFT_CS, PIN_TFT_DC, PIN_TFT_RST) { _isOn = false; } |
||||
|
// ST7789Display() : DisplayDriver(135, 240), display(PIN_TFT_CS, PIN_TFT_DC, PIN_TFT_SDA, PIN_TFT_SCL, PIN_TFT_RST) { _isOn = false; }
|
||||
|
bool begin(); |
||||
|
|
||||
|
bool isOn() override { return _isOn; } |
||||
|
void turnOn() override; |
||||
|
void turnOff() override; |
||||
|
void clear() override; |
||||
|
void startFrame(Color bkg = DARK) override; |
||||
|
void setTextSize(int sz) override; |
||||
|
void setColor(Color c) override; |
||||
|
void setCursor(int x, int y) override; |
||||
|
void print(const char* str) override; |
||||
|
void fillRect(int x, int y, int w, int h) override; |
||||
|
void drawRect(int x, int y, int w, int h) override; |
||||
|
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override; |
||||
|
void endFrame() override; |
||||
|
}; |
||||
Loading…
Reference in new issue