diff options
author | Stanley Huang <stanleyhuangyc@gmail.com> | 2014-03-07 00:05:10 +0800 |
---|---|---|
committer | Stanley Huang <stanleyhuangyc@gmail.com> | 2014-03-07 00:05:10 +0800 |
commit | 2b1e91b1ccd6130a303a17463c7fe75cf0859273 (patch) | |
tree | 8ef567930ae881d995bacd06f06f8cc7bc92e0e1 /nanologger/MicroLCD.h | |
parent | fe25cca198cc468ae12d9cbf320c0d273c630016 (diff) | |
download | 2021-arduino-obd-2b1e91b1ccd6130a303a17463c7fe75cf0859273.tar.gz 2021-arduino-obd-2b1e91b1ccd6130a303a17463c7fe75cf0859273.tar.bz2 2021-arduino-obd-2b1e91b1ccd6130a303a17463c7fe75cf0859273.zip |
Add NanoLogger
Diffstat (limited to 'nanologger/MicroLCD.h')
-rw-r--r-- | nanologger/MicroLCD.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/nanologger/MicroLCD.h b/nanologger/MicroLCD.h new file mode 100644 index 0000000..e421505 --- /dev/null +++ b/nanologger/MicroLCD.h @@ -0,0 +1,94 @@ +/************************************************************************* +* Arduino Text Display Library for Multiple LCDs +* Distributed under GPL v2.0 +* Copyright (c) 2013 Stanley Huang <stanleyhuangyc@live.com> +* All rights reserved. +*************************************************************************/ + +#if !defined(__AVR_ATmega2560__) && !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega644P__) +//#define MEMORY_SAVING +#endif + +typedef enum { + FONT_SIZE_SMALL = 0, + FONT_SIZE_MEDIUM, + FONT_SIZE_LARGE, + FONT_SIZE_XLARGE +} FONT_SIZE; + +#define FLAG_PAD_ZERO 1 +#define FLAG_PIXEL_DOUBLE_H 2 +#define FLAG_PIXEL_DOUBLE_V 4 +#define FLAG_PIXEL_DOUBLE (FLAG_PIXEL_DOUBLE_H | FLAG_PIXEL_DOUBLE_V) + +extern const PROGMEM unsigned char font5x8[][5]; +extern const PROGMEM unsigned char digits8x8[][8] ; +extern const PROGMEM unsigned char digits16x16[][32]; +extern const PROGMEM unsigned char digits16x24[][48]; +extern const PROGMEM unsigned char font8x16_doslike[][16]; +extern const PROGMEM unsigned char font8x16_terminal[][16]; + +class LCD_Common +{ +public: + LCD_Common():m_font(FONT_SIZE_SMALL),m_flags(0) {} + void setFont(FONT_SIZE size) { m_font = size; } + void setFlags(byte flags) { m_flags = flags; } + virtual void backlight(bool on) {} + virtual void draw(const PROGMEM byte* buffer, byte x, byte y, byte width, byte height) {} + void printInt(uint16_t value, int8_t padding = -1); + void printLong(uint32_t value, int8_t padding = -1); +protected: + virtual void writeDigit(byte n) {} + byte m_font; + byte m_flags; +}; + +class LCD_Null : public LCD_Common, public Print +{ +public: + byte getLines() { return 0; } + byte getCols() { return 0; } + void clearLine(byte line) {} + void clear() {} + void begin() {} + void setCursor(byte column, byte line) {} + size_t write(uint8_t c) { return 0; } +}; + +#include "SSD1306.h" + +class LCD_SSD1306 : public LCD_Common, public SSD1306, public Print +{ +public: + void setCursor(byte column, byte line); + void draw(const PROGMEM byte* buffer, byte width, byte height); + size_t write(uint8_t c); + void clear(byte x = 0, byte y = 0, byte width = 128, byte height = 64); + void clearLine(byte line); + byte getLines() { return 21; } + byte getCols() { return 8; } +private: + void writeDigit(byte n); + byte m_col; + byte m_row; +}; + +class LCD_SH1106 : public LCD_Common, public Print +{ +public: + void begin(); + void setCursor(byte column, byte line); + void draw(const PROGMEM byte* buffer, byte width, byte height); + size_t write(uint8_t c); + void clear(byte x = 0, byte y = 0, byte width = 128, byte height = 64); + void clearLine(byte line); + byte getLines() { return 21; } + byte getCols() { return 8; } +private: + void WriteCommand(unsigned char ins); + void WriteData(unsigned char dat); + void writeDigit(byte n); + byte m_col; + byte m_row; +}; |