mirror of https://github.com/meshcore-dev/MeshCore
2 changed files with 161 additions and 0 deletions
@ -0,0 +1,125 @@ |
|||||
|
#ifdef ST7735 |
||||
|
|
||||
|
#include "ST7735Display.h" |
||||
|
|
||||
|
#ifndef DISPLAY_ROTATION |
||||
|
#define DISPLAY_ROTATION 2 |
||||
|
#endif |
||||
|
|
||||
|
|
||||
|
bool ST7735Display::i2c_probe(TwoWire& wire, uint8_t addr) { |
||||
|
return true; |
||||
|
/*
|
||||
|
wire.beginTransmission(addr); |
||||
|
uint8_t error = wire.endTransmission(); |
||||
|
return (error == 0); |
||||
|
*/ |
||||
|
} |
||||
|
|
||||
|
bool ST7735Display::begin() { |
||||
|
if(!_isOn) { |
||||
|
pinMode(PIN_TFT_VDD_CTL, OUTPUT); |
||||
|
pinMode(PIN_TFT_LEDA_CTL, OUTPUT); |
||||
|
digitalWrite(PIN_TFT_VDD_CTL, HIGH); |
||||
|
digitalWrite(PIN_TFT_LEDA_CTL, HIGH); |
||||
|
digitalWrite(PIN_TFT_RST, HIGH); |
||||
|
|
||||
|
display.initR(INITR_MINI160x80_PLUGIN); |
||||
|
display.setRotation(DISPLAY_ROTATION); |
||||
|
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 ST7735Display::turnOn() { |
||||
|
|
||||
|
ST7735Display::begin(); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
void ST7735Display::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 ST7735Display::clear() { |
||||
|
//Serial.println("DBG: display.Clear");
|
||||
|
display.fillScreen(ST77XX_BLACK); |
||||
|
} |
||||
|
|
||||
|
void ST7735Display::startFrame(Color bkg) { |
||||
|
display.fillScreen(0x00); |
||||
|
display.setTextColor(ST77XX_WHITE); |
||||
|
display.setTextSize(1); // This one affects size of Please wait... message
|
||||
|
display.cp437(true); // Use full 256 char 'Code Page 437' font
|
||||
|
} |
||||
|
|
||||
|
void ST7735Display::setTextSize(int sz) { |
||||
|
display.setTextSize(sz); |
||||
|
} |
||||
|
|
||||
|
void ST7735Display::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 ST7735Display::setCursor(int x, int y) { |
||||
|
display.setCursor(x, y); |
||||
|
} |
||||
|
|
||||
|
void ST7735Display::print(const char* str) { |
||||
|
display.print(str); |
||||
|
} |
||||
|
|
||||
|
void ST7735Display::fillRect(int x, int y, int w, int h) { |
||||
|
display.fillRect(x, y, w, h, _color); |
||||
|
} |
||||
|
|
||||
|
void ST7735Display::drawRect(int x, int y, int w, int h) { |
||||
|
display.drawRect(x, y, w, h, _color); |
||||
|
} |
||||
|
|
||||
|
void ST7735Display::drawXbm(int x, int y, const uint8_t* bits, int w, int h) { |
||||
|
display.drawBitmap(x, y, bits, w, h, _color); |
||||
|
} |
||||
|
|
||||
|
void ST7735Display::endFrame() { |
||||
|
// display.display();
|
||||
|
} |
||||
|
|
||||
|
#endif |
||||
@ -0,0 +1,36 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "DisplayDriver.h" |
||||
|
#include <Wire.h> |
||||
|
#include <SPI.h> |
||||
|
#include <Adafruit_GFX.h> |
||||
|
#include <Adafruit_ST7735.h> |
||||
|
|
||||
|
class ST7735Display : public DisplayDriver { |
||||
|
Adafruit_ST7735 display; |
||||
|
bool _isOn; |
||||
|
uint16_t _color; |
||||
|
|
||||
|
bool i2c_probe(TwoWire& wire, uint8_t addr); |
||||
|
public: |
||||
|
#ifdef USE_PIN_TFT |
||||
|
ST7735Display() : DisplayDriver(80, 160), display(PIN_TFT_CS, PIN_TFT_DC, PIN_TFT_SDA, PIN_TFT_SCL, PIN_TFT_RST) { _isOn = false; } |
||||
|
#else |
||||
|
ST7735Display() : DisplayDriver(80, 160), display(&SPI1, PIN_TFT_CS, PIN_TFT_DC, PIN_TFT_RST) { _isOn = false; } |
||||
|
#endif |
||||
|
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