add bar drawing, use pointers more

This commit is contained in:
Drath
2025-05-03 20:20:15 +02:00
parent e08f6c8077
commit 8632cab336
7 changed files with 99 additions and 41 deletions

View File

@@ -36,24 +36,24 @@ LCDDisplay::~LCDDisplay() {
void LCDDisplay::clear() {
uint8_t cmdbuf[] = {254, 88};
write(_lcd, cmdbuf, 2);
write(_lcd, &cmdbuf, 2);
}
void LCDDisplay::setContrast(uint8_t contrast) {
std::cout << "[LCDDisplay] Set contrast to " << std::to_string(contrast) << std::endl;
uint8_t cmdbuf[] = {254, 80, contrast};
write(_lcd, cmdbuf, 3);
write(_lcd, &cmdbuf, 3);
}
void LCDDisplay::setBacklight(bool enabled) {
std::cout << "[LCDDisplay] Backlight set to " << std::to_string(enabled) << std::endl;
uint8_t cmdbuf[] = {254, (uint8_t)(enabled ? 66 : 70), 255};
write(_lcd, cmdbuf, enabled ? 3 : 2);
write(_lcd, &cmdbuf, enabled ? 3 : 2);
}
void LCDDisplay::setCursor(uint8_t row, uint8_t col) {
uint8_t cmdbuf[] = {254, 71, (uint8_t)(col + 1), (uint8_t)(row + 1)};
write(_lcd, cmdbuf, 4);
write(_lcd, &cmdbuf, 4);
}
void LCDDisplay::writeStr(std::string str) {
@@ -62,7 +62,7 @@ void LCDDisplay::writeStr(std::string str) {
void LCDDisplay::writeLines(std::array<std::string, 4> lines) {
for (auto& line : lines) {
if(line.size() > 40) {
if (line.size() > 40) {
std::cerr << "Line " << line << " too long! (" << line.size() << " chars)" << std::endl;
continue;
}
@@ -85,10 +85,22 @@ void LCDDisplay::writeSStream(std::stringstream& ss) {
writeStr(s.substr(80, 159));
}
void LCDDisplay::setCustomChar(uint8_t index, std::array<uint8_t, 8> cchar) {
uint8_t cmdbuf[11];
cmdbuf[0] = 254; cmdbuf[1] = 78; cmdbuf[2] = index;
for(uint8_t i = 0; i < 8; i++)
cmdbuf[i+3] = cchar[i];
write(_lcd, cmdbuf, 11);
cmdbuf[0] = 254;
cmdbuf[1] = 78;
cmdbuf[2] = index;
for (uint8_t i = 0; i < 8; i++)
cmdbuf[i + 3] = cchar[i];
write(_lcd, &cmdbuf, 11);
}
char LCDDisplay::bar(uint8_t char_id, double value) {
std::array<uint8_t, 8> b;
b.fill(0b01110);
for(uint8_t i = 0; i < (1.0 - value) * 8; i++)
b[i] = 0;
setCustomChar(char_id, b);
return cc[char_id];
}