From 53041928135de2c6c949c3694f30dcf5b12e62bb Mon Sep 17 00:00:00 2001 From: Mihai Tudor Panu Date: Tue, 30 Aug 2016 15:16:07 -0700 Subject: [PATCH] jhd1313m1: added backlight control functions Signed-off-by: Mihai Tudor Panu --- src/lcd/jhd1313m1.cxx | 27 ++++++++++++++------------- src/lcd/jhd1313m1.hpp | 13 +++++++++++++ 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/lcd/jhd1313m1.cxx b/src/lcd/jhd1313m1.cxx index c161f34b..4d83f725 100644 --- a/src/lcd/jhd1313m1.cxx +++ b/src/lcd/jhd1313m1.cxx @@ -77,18 +77,9 @@ Jhd1313m1::Jhd1313m1(int bus, int lcdAddress, int rgbAddress) ret = command(LCD_ENTRYMODESET | LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT); UPM_CHECK_MRAA_SUCCESS(ret, "Unable to initialise the LCD controller"); - ret = m_i2c_lcd_rgb.writeReg(0, 0); + ret = setColor(0xFF, 0xFF, 0xFF); UPM_CHECK_MRAA_SUCCESS(ret, "Unable to initialise the RGB controller"); - ret = m_i2c_lcd_rgb.writeReg(1, 0); - UPM_CHECK_MRAA_SUCCESS(ret, "Unable to initialise the RGB controller"); - ret = m_i2c_lcd_rgb.writeReg(0x08, 0xAA); - UPM_CHECK_MRAA_SUCCESS(ret, "Unable to initialise the RGB controller"); - - ret = m_i2c_lcd_rgb.writeReg(0x04, 0xFF); - UPM_CHECK_MRAA_SUCCESS(ret, "Unable to initialise the RGB controller"); - ret = m_i2c_lcd_rgb.writeReg(0x03, 0xFF); - UPM_CHECK_MRAA_SUCCESS(ret, "Unable to initialise the RGB controller"); - ret = m_i2c_lcd_rgb.writeReg(0x02, 0xFF); + ret = backlightOn(); UPM_CHECK_MRAA_SUCCESS(ret, "Unable to initialise the RGB controller"); } @@ -107,8 +98,6 @@ Jhd1313m1::setColor(uint8_t r, uint8_t g, uint8_t b) UPM_GOTO_ON_MRAA_FAIL(ret, beach); ret = m_i2c_lcd_rgb.writeReg(1, 0); UPM_GOTO_ON_MRAA_FAIL(ret, beach); - ret = m_i2c_lcd_rgb.writeReg(0x08, 0xAA); - UPM_GOTO_ON_MRAA_FAIL(ret, beach); ret = m_i2c_lcd_rgb.writeReg(0x04, r); UPM_GOTO_ON_MRAA_FAIL(ret, beach); @@ -120,6 +109,18 @@ beach: return ret; } +mraa::Result +Jhd1313m1::backlightOn() +{ + return m_i2c_lcd_rgb.writeReg(0x08, 0xAA); +} + +mraa::Result +Jhd1313m1::backlightOff() +{ + return m_i2c_lcd_rgb.writeReg(0x08, 0x00); +} + mraa::Result Jhd1313m1::scroll(bool direction) { diff --git a/src/lcd/jhd1313m1.hpp b/src/lcd/jhd1313m1.hpp index 0009d138..335246a2 100644 --- a/src/lcd/jhd1313m1.hpp +++ b/src/lcd/jhd1313m1.hpp @@ -76,6 +76,7 @@ class Jhd1313m1 : public Lcm1602 mraa::Result scroll(bool direction); /** * Sets the color of the backlight + * Can be used to change the color even when the backlight is off * * @param r 0-255 value for red * @param g 0-255 value for green @@ -83,6 +84,18 @@ class Jhd1313m1 : public Lcm1602 * @return Result of the operation */ mraa::Result setColor(uint8_t r, uint8_t g, uint8_t b); + /** + * Turns backlight on + * + * @return Result of operation + */ + mraa::Result backlightOn(); + /** + * Turns backlight off, background color is saved + * + * @return Result of operation + */ + mraa::Result backlightOff(); protected: virtual mraa::Result command(uint8_t cmd);