gbmanager/lcd.cpp

31 lines
740 B
C++

#include "lcd.h"
constexpr uint8_t SHIFT_BACKLIGHT = 3;
LCD::LCD(i2c_inst_t *i2c, const uint gpio_sda, const uint gpio_scl,
const uint8_t i2c_addr, uint8_t num_cols, uint8_t num_lines)
: i2c_addr{i2c_addr}, num_cols{num_cols}, num_lines{num_lines} {
i2c_init(i2c1, 100 * 1000);
gpio_set_function(gpio_sda, GPIO_FUNC_I2C);
gpio_set_function(gpio_scl, GPIO_FUNC_I2C);
gpio_pull_up(gpio_sda);
gpio_pull_up(gpio_scl);
}
int LCD::backlight_off() {
uint8_t data = 0;
int ret{0};
ret = i2c_write_blocking(i2c1, i2c_addr, &data, 1, false);
return ret;
}
int LCD::backlight_on() {
uint8_t data = 1 << SHIFT_BACKLIGHT;
int ret{0};
ret = i2c_write_blocking(i2c1, i2c_addr, &data, 1, false);
return ret;
}