blob: b56af9b566e7d7b005500c68aaae6d294fb27170 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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
|