summaryrefslogtreecommitdiff
path: root/libraries
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2021-06-13 12:44:24 +0200
committerLudovic Pouzenc <ludovic@pouzenc.fr>2021-06-13 12:44:24 +0200
commitaa03d0e13802825a9526d87a0e79fa0f7eed38be (patch)
treef940f8e280f680e83ada8795019c076fc7c288db /libraries
parent7b6035179821fd7a7553ac3b60f36e84fc1cccd4 (diff)
download2021-arduino-obd-aa03d0e13802825a9526d87a0e79fa0f7eed38be.tar.gz
2021-arduino-obd-aa03d0e13802825a9526d87a0e79fa0f7eed38be.tar.bz2
2021-arduino-obd-aa03d0e13802825a9526d87a0e79fa0f7eed38be.zip
MyLCD : move as lib, add more lines using a vertical split
Diffstat (limited to 'libraries')
-rw-r--r--libraries/MyLCD/MyLCD.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/libraries/MyLCD/MyLCD.h b/libraries/MyLCD/MyLCD.h
new file mode 100644
index 0000000..b56af9b
--- /dev/null
+++ b/libraries/MyLCD/MyLCD.h
@@ -0,0 +1,82 @@
+#ifndef __MYLCD_H
+#define __MYLCD_H
+#include <MultiLCD.h>
+class MyLCD : public LCD_ILI9325D {
+ /* 2.8" ILI9325 based LCD 320x240x16bpp*/
+ public:
+ uint8_t column, line;
+ MyLCD() {
+ LCD_ILI9325D::setFontSize(FONT_SIZE_SMALL);
+ this->clear();
+ }
+ void begin() {
+ LCD_ILI9325D::begin();
+ };
+ /* Stub to be compatible with Serial interface. Can't find an abstract Class defined properly in Arduino core stuff */
+ void begin(long speed) {
+ this->begin();
+ };
+ /* Simulate more lines with 2 columns */
+ byte getLines() { return 30*2; }
+ byte getCols() { return 53/2; }
+ void setCursor(uint8_t column, uint8_t line) {
+ /* column and line as in a terminal, start at line 1, col 1. each column is one character wide*/
+ this->column = (column==0)?1:column;
+ this->line = (column==0)?1:line;
+ /* Simulate more lines with 2 columns */
+ if ( this->line <= this->getLines()/2 ) {
+ LCD_ILI9325D::setCursor((column-1)*6, line-1);
+ } else {
+ LCD_ILI9325D::setCursor((this->getCols()+column-1)*6, line-1-this->getLines()/2);
+ }
+ }
+ void clear() {
+ LCD_ILI9325D::clear();
+ this->setCursor(1, 1);
+ }
+ size_t println() {
+ if ( this->line < this->getLines() ) {
+ this->setCursor(1, this->line+1);
+ } else {
+ this->clear();
+ }
+ }
+ void moveRight(size_t len) {
+ if ( this->column+len <= this->getCols() ) {
+ this->setCursor(this->column+len, this->line);
+ } else {
+ this->println();
+ }
+ }
+ size_t println(const String &s) {
+ size_t len = LCD_ILI9325D::print(s);
+ this->println();
+ return len;
+ }
+ size_t println(const char *s) {
+ size_t len = LCD_ILI9325D::print(s);
+ this->println();
+ return len;
+ }
+ size_t println(const char c) {
+ size_t len = LCD_ILI9325D::print(c);
+ this->println();
+ return len;
+ }
+ size_t print(const String &s) {
+ size_t len = LCD_ILI9325D::print(s);
+ this->moveRight(len);
+ return len;
+ }
+ size_t print(const char *s) {
+ size_t len = LCD_ILI9325D::print(s);
+ this->moveRight(len);
+ return len;
+ }
+ size_t print(const char c) {
+ size_t len = LCD_ILI9325D::print(c);
+ this->moveRight(len);
+ return len;
+ }
+};
+#endif