1 /* 2 * Author: Yevgeniy Kiveisha <yevgeniy.kiveisha@intel.com> 3 * Copyright (c) 2014 Intel Corporation. 4 * 5 * Contributions: Jon Trulson <jtrulson@ics.com> 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining 8 * a copy of this software and associated documentation files (the 9 * "Software"), to deal in the Software without restriction, including 10 * without limitation the rights to use, copy, modify, merge, publish, 11 * distribute, sublicense, and/or sell copies of the Software, and to 12 * permit persons to whom the Software is furnished to do so, subject to 13 * the following conditions: 14 * 15 * The above copyright notice and this permission notice shall be 16 * included in all copies or substantial portions of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 24 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 */ 26 #pragma once 27 28 #include <string> 29 #include "lcm1602.h" 30 31 namespace upm 32 { 33 /** 34 * @library i2clcd 35 * @sensor jhd1313m1 36 * @comname JHD1313M1 Display 37 * @altname Grove RGB LCD 38 * @type display 39 * @man seeed adafruit sparkfun 40 * @web http://www.seeedstudio.com/depot/Grove-LCD-RGB-Backlight-p-1643.html?cPath=34_36 41 * @con i2c 42 * @kit gsk 43 * 44 * @brief API for the JHD1313M1 I2C controller for HD44780-based displays with 45 * an RGB backlight, such as a Grove RGB I2C LCD display 46 * 47 * JHD1313M1 has two I2C addreses: one belongs to a controller, very similar 48 * to the upm::Lcm1602 LCD driver, that controls the HD44780-based display, and the 49 * other controls only the backlight. This module was tested with the Seeed 50 * Grove LCD RGB Backlight v2.0 display that requires 5V to operate. 51 * 52 * @image html grovergblcd.jpg 53 * @snippet jhd1313m1-lcd.cxx Interesting 54 */ 55 class Jhd1313m1 : public Lcm1602 56 { 57 public: 58 /** 59 * Jhd1313m1 constructor 60 * 61 * @param bus I2C bus to use 62 * @param address Slave address the LCD is registered on 63 * @param address Slave address the RGB backlight is registered on 64 */ 65 Jhd1313m1(int bus, int lcdAddress = 0x3E, int rgbAddress = 0x62); 66 /** 67 * Jhd1313m1 destructor 68 */ 69 ~Jhd1313m1(); 70 /** 71 * Makes the LCD scroll text 72 * 73 * @param direction True if scrolling to the right 74 * @return Result of the operation 75 */ 76 mraa::Result scroll(bool direction); 77 /** 78 * Sets the color of the backlight 79 * 80 * @param r 0-255 value for red 81 * @param g 0-255 value for green 82 * @param b 0-255 value for blue 83 * @return Result of the operation 84 */ 85 mraa::Result setColor(uint8_t r, uint8_t g, uint8_t b); 86 87 protected: 88 virtual mraa::Result command(uint8_t cmd); 89 virtual mraa::Result data(uint8_t data); 90 91 private: 92 int m_rgb_address; 93 mraa::I2c m_i2c_lcd_rgb; 94 }; 95 } 96