mirror of
https://github.com/eclipse/upm.git
synced 2025-03-24 01:10:22 +03:00
i2clcd: Add createChar method
LCDs based on the HD44780 allow for setting 8 custom characters. This patch adds a method that exposes this capability. Signed-off-by: Clark Scheff <clark@scheffsblend.com> Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
parent
27a3a90d1f
commit
7bd7e80b2e
@ -47,6 +47,20 @@ I2CLcd::write (int row, int column, std::string msg) {
|
|||||||
write (msg);
|
write (msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mraa_result_t
|
||||||
|
I2CLcd::createChar(uint8_t charSlot, uint8_t charData[]) {
|
||||||
|
mraa_result_t error = MRAA_SUCCESS;
|
||||||
|
charSlot &= 0x07; // only have 8 positions we can set
|
||||||
|
error = i2Cmd(m_i2c_lcd_control, LCD_SETCGRAMADDR | (charSlot << 3));
|
||||||
|
if (error == MRAA_SUCCESS) {
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
error = i2cData(m_i2c_lcd_control, charData[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
mraa_result_t
|
mraa_result_t
|
||||||
I2CLcd::close() {
|
I2CLcd::close() {
|
||||||
return mraa_i2c_stop(m_i2c_lcd_control);
|
return mraa_i2c_stop(m_i2c_lcd_control);
|
||||||
|
@ -68,6 +68,9 @@ namespace upm {
|
|||||||
#define LCD_5x10DOTS 0x04
|
#define LCD_5x10DOTS 0x04
|
||||||
#define LCD_5x8DOTS 0x00
|
#define LCD_5x8DOTS 0x00
|
||||||
|
|
||||||
|
// flags for CGRAM
|
||||||
|
#define LCD_SETCGRAMADDR 0x40
|
||||||
|
|
||||||
#define LCD_EN 0x04 // Enable bit
|
#define LCD_EN 0x04 // Enable bit
|
||||||
#define LCD_RW 0x02 // Read/Write bit
|
#define LCD_RW 0x02 // Read/Write bit
|
||||||
#define LCD_RS 0x01 // Register select bit
|
#define LCD_RS 0x01 // Register select bit
|
||||||
@ -85,6 +88,7 @@ class I2CLcd {
|
|||||||
virtual mraa_result_t setCursor (int row, int column) = 0;
|
virtual mraa_result_t setCursor (int row, int column) = 0;
|
||||||
virtual mraa_result_t clear () = 0;
|
virtual mraa_result_t clear () = 0;
|
||||||
virtual mraa_result_t home () = 0;
|
virtual mraa_result_t home () = 0;
|
||||||
|
virtual mraa_result_t createChar(uint8_t charSlot, uint8_t charData[]);
|
||||||
virtual mraa_result_t i2Cmd (mraa_i2c_context ctx, uint8_t value);
|
virtual mraa_result_t i2Cmd (mraa_i2c_context ctx, uint8_t value);
|
||||||
virtual mraa_result_t i2cReg (mraa_i2c_context ctx, int deviceAdress, int addr, uint8_t data);
|
virtual mraa_result_t i2cReg (mraa_i2c_context ctx, int deviceAdress, int addr, uint8_t data);
|
||||||
virtual mraa_result_t i2cData (mraa_i2c_context ctx, uint8_t value);
|
virtual mraa_result_t i2cData (mraa_i2c_context ctx, uint8_t value);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user