summaryrefslogtreecommitdiff
path: root/libraries/MultiLCD/MultiLCD.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/MultiLCD/MultiLCD.h')
-rw-r--r--libraries/MultiLCD/MultiLCD.h54
1 files changed, 47 insertions, 7 deletions
diff --git a/libraries/MultiLCD/MultiLCD.h b/libraries/MultiLCD/MultiLCD.h
index 35016aa..5a8f7e3 100644
--- a/libraries/MultiLCD/MultiLCD.h
+++ b/libraries/MultiLCD/MultiLCD.h
@@ -3,26 +3,51 @@ extern const PROGMEM unsigned char font5x8[][5];
#include "PCD8544.h"
-class LCD_PCD8544 : public PCD8544 {
+class LCD_Common
+{
public:
+ virtual void backlight(bool on) {}
+ virtual byte getLines() = 0;
+ virtual byte getCols() = 0;
+ virtual void changeLine() {}
+};
+
+class LCD_PCD8544 : public LCD_Common, public PCD8544
+{
+public:
+ byte getLines() { return 6; }
+ byte getCols() { return 14; }
void printLarge(const char* s);
void backlight(bool on)
{
pinMode(7, OUTPUT);
digitalWrite(7, on ? HIGH : LOW);
}
+ void clearLine(byte line)
+ {
+ setCursor(0, line);
+ for (byte i = 14; i > 0; i--) write(' ');
+ }
};
#include "ZtLib.h"
#define OLED_ADDRESS 0x27
-class LCD_OLED : public ZtLib {
+class LCD_OLED : public LCD_Common, public ZtLib
+{
public:
- void setCursor(unsigned char column, unsigned char line)
+ byte getLines() { return 4; }
+ byte getCols() { return 16; }
+ void setCursor(byte column, byte line)
{
m_column = column << 3;
- m_line = line == -1 ? m_line + 2 : (line << 1);
+ m_line = line << 1;
+ }
+ void changeLine()
+ {
+ m_column = 0;
+ m_line += 2;
}
void write(char c);
void print(const char* s);
@@ -30,15 +55,30 @@ public:
void clear();
void begin();
void backlight(bool on) {}
+ void clearLine(byte line)
+ {
+ setCursor(0, line);
+ for (byte i = 16; i > 0; i--) write(' ');
+ }
private:
unsigned char m_column;
unsigned char m_line;
};
#include "LCD4Bit_mod.h"
-class LCD_1602 : public LCD4Bit_mod {
+class LCD_1602 : public LCD_Common, public LCD4Bit_mod
+{
public:
- void printLarge(const char* s) { print(s); }
- void backlight(bool on) {}
+ byte getLines() { return 2; }
+ byte getCols() { return 16; }
+ void printLarge(const char* s)
+ {
+ print(s);
+ }
+ void clearLine(byte line)
+ {
+ setCursor(0, line);
+ for (byte i = 16; i > 0; i--) write(' ');
+ }
};