int
main(int argc, char **argv)
{
+//! [Interesting]
upm::Lcm1602* lcd = new upm::Lcm1602(0, 0x27);
lcd->setCursor(0,0);
lcd->write("Hello World");
+//! [Interesting]
lcd->setCursor(1,2);
lcd->write("Hello World");
lcd->setCursor(2,4);
63, 63, 63, 63, 63, 31, 31, 31, 31, 31, 15, 15, 15, 15, 7, 7, 7, 7, 3, 3,
3, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0 };
+
int
main(int argc, char **argv)
{
- upm::SSD1308 *lcd = new upm::SSD1308 (BUS_NUMBER, DEVICE_ADDRESS);
+//! [Interesting]
+ upm::SSD1308 *lcd = new upm::SSD1308(BUS_NUMBER, DEVICE_ADDRESS);
- lcd->clear ();
- lcd->draw (intel_logo, 1024);
+ lcd->clear();
+ lcd->draw(intel_logo, 1024);
- lcd->close ();
+ lcd->close();
+//! [Interesting]
}
int
main(int argc, char **argv)
{
- upm::SSD1327 *lcd = new upm::SSD1327 (BUS_NUMBER, 0x3C);
+//! [Interesting]
+ upm::SSD1327 *lcd = new upm::SSD1327(BUS_NUMBER, 0x3C);
- /*
- * Simple print hello world
- */
- for(uint8_t i = 0; i < 12 ; i++) {
- lcd->setCursor (i, 0);
- lcd->setGrayLevel (i);
- lcd->write ("Hello World");
+ // Simple print hello world
+ for (uint8_t i = 0; i < 12; i++) {
+ lcd->setCursor(i, 0);
+ lcd->setGrayLevel(i);
+ lcd->write("Hello World");
}
- /*
- * Simple print hello world
- */
- lcd->draw (SeeedLogo, 96 * 96 / 8);
+ // Simple print hello world
+ lcd->draw(SeeedLogo, 96 * 96 / 8);
- lcd->close ();
+ lcd->close();
+//! [Interesting]
}
int
main(int argc, char **argv)
{
+//! [Interesting]
// 0x62 RGB_ADDRESS, 0x3E LCD_ADDRESS
upm::Jhd1313m1 *lcd = new upm::Jhd1313m1(0, 0x3E, 0x62);
lcd->setCursor(0,0);
lcd->setCursor(1,2);
lcd->write("Hello World");
lcd->close();
+//! [Interesting]
}
namespace upm {
+/**
+ * @brief C++ API for Jhd1313m1 i2c controller for HD44780 based displays with
+ * an RGB backlight such as the Grove RGB i2c LCD display
+ *
+ * @snippet rgb-lcd.cxx Interesting
+ */
class Jhd1313m1 : public I2CLcd {
public:
- Jhd1313m1 (int bus, int lcdAddress, int rgbAddress);
- ~Jhd1313m1 ();
- mraa_result_t setColor(uint8_t r, uint8_t g, uint8_t b);
- mraa_result_t write (std::string msg);
- mraa_result_t setCursor (int row, int column);
- mraa_result_t clear ();
- mraa_result_t home ();
+ /**
+ * Jhd1313m1 constructor
+ *
+ * @param bus i2c bus to use
+ * @param address the slave address the lcd is registered on
+ * @param address the slave address the rgb backlight is on
+ */
+ Jhd1313m1(int bus, int lcdAddress, int rgbAddress);
+ /**
+ * Jhd1313m1 destructor
+ */
+ ~Jhd1313m1();
+ /**
+ * Make the LCD scroll text
+ *
+ * @param direction, true is typical scrolling to the right
+ * @return Result of operation
+ */
mraa_result_t scroll (bool direction);
+ /**
+ * Set the color of the backlight
+ *
+ * @param r 0-255 value for red
+ * @param g 0-255 value for green
+ * @param b 0-255 value for blue
+ * @return Result of operation
+ */
+ mraa_result_t setColor(uint8_t r, uint8_t g, uint8_t b);
+ /**
+ * Write a string to LCD
+ *
+ * @param msg The std::string to write to display, note only ascii
+ * chars are supported
+ * @return Result of operation
+ */
+ mraa_result_t write(std::string msg);
+ /**
+ * Set cursor to a coordinate
+ *
+ * @param row The row to set cursor to
+ * @param column The column to set cursor to
+ * @return Result of operation
+ */
+ mraa_result_t setCursor(int row, int column);
+ /**
+ * Clear display from characters
+ *
+ * @return Result of operatio
+ */
+ mraa_result_t clear();
+ /**
+ * Return to coordinate 0,0
+ *
+ * @return Result of operation
+ */
+ mraa_result_t home();
private:
int m_rgb_address;
namespace upm {
+/**
+ * @brief C++ API for LCM1602 i2c controller for HD44780 based displays
+ *
+ * This supports all sizes of HD44780 displays from 16x2 to 4x20, the
+ * controller has no idea of the actual display hardware so will let you write
+ * further than you can see
+ *
+ * @snippet lcm-lcd.cxx Interesting
+ */
class Lcm1602 : public I2CLcd {
public:
- /** LCM1602 Constructor.
- * Calls MRAA initialisation functions.
- * @param bus i2c bus to use
- * @param address the slave address the lcd is registered on.
- */
+ /**
+ * Lcm1602 Constructor, calls libmraa initialisation functions
+ *
+ * @param bus i2c bus to use
+ * @param address the slave address the lcd is registered on
+ */
Lcm1602(int bus, int address);
+ /**
+ * Lcm1602 Destructor
+ */
~Lcm1602();
- mraa_result_t write (std::string msg);
- mraa_result_t setCursor (int row, int column);
- mraa_result_t clear ();
- mraa_result_t home ();
+ /**
+ * Write a string to LCD
+ *
+ * @param msg The std::string to write to display, note only ascii
+ * chars are supported
+ * @return Result of operation
+ */
+ mraa_result_t write(std::string msg);
+ /**
+ * Set cursor to a coordinate
+ *
+ * @param row The row to set cursor to
+ * @param column The column to set cursor to
+ * @return Result of operation
+ */
+ mraa_result_t setCursor(int row, int column);
+ /**
+ * Clear display from characters
+ *
+ * @return Result of operatio
+ */
+ mraa_result_t clear();
+ /**
+ * Return to coordinate 0,0
+ *
+ * @return Result of operation
+ */
+ mraa_result_t home();
private :
- mraa_result_t send (uint8_t value, int mode);
+ mraa_result_t send(uint8_t value, int mode);
mraa_result_t write4bits(uint8_t value);
mraa_result_t expandWrite(uint8_t value);
mraa_result_t pulseEnable(uint8_t value);
PAGE = 2
} displayAddressingMode;
+/**
+ * @brief C++ API for SSD1308 i2c controlled OLED displays
+ *
+ * @snippet lcm-lcd.cxx Interesting
+ */
class SSD1308 : public I2CLcd {
public:
- /** SSD1308 Constructor.
- * Calls MRAA initialisation functions.
- * @param bus i2c bus to use
- * @param address the slave address the lcd is registered on.
- */
+ /**
+ * SSD1308 Constructor, calls libmraa initialisation functions
+ *
+ * @param bus i2c bus to use
+ * @param address the slave address the lcd is registered on
+ */
SSD1308 (int bus, int address);
+ /**
+ * SSD1308 Destructor
+ */
~SSD1308 ();
+ /**
+ * Draw an image, see examples/python/make_oled_pic.py for an
+ * explanation on how the pixels are mapped to bytes
+ *
+ * @param data the buffer to read
+ * @param bytes the amount of bytes to read from the pointer
+ * @return Result of operation
+ */
mraa_result_t draw(uint8_t *data, int bytes);
-
- // pure virtual methods
- mraa_result_t write (std::string msg);
- mraa_result_t setCursor (int row, int column);
- mraa_result_t clear ();
- mraa_result_t home ();
-
+ /**
+ * Write a string to LCD
+ *
+ * @param msg The std::string to write to display, note only ascii
+ * chars are supported
+ * @return Result of operation
+ */
+ mraa_result_t write(std::string msg);
+ /**
+ * Set cursor to a coordinate
+ *
+ * @param row The row to set cursor to
+ * @param column The column to set cursor to
+ * @return Result of operation
+ */
+ mraa_result_t setCursor(int row, int column);
+ /**
+ * Clear display from characters
+ *
+ * @return Result of operatio
+ */
+ mraa_result_t clear();
+ /**
+ * Return to coordinate 0,0
+ *
+ * @return Result of operation
+ */
+ mraa_result_t home();
private:
mraa_result_t writeChar (mraa_i2c_context ctx, uint8_t value);
mraa_result_t setNormalDisplay ();
class SSD1327 : public I2CLcd {
public:
- /** SSD1308 Constructor.
- * Calls MRAA initialisation functions.
+ /**
+ * SSD1308 Constructor, calls libmraa initialisation functions
+ *
* @param bus i2c bus to use
- * @param address the slave address the lcd is registered on.
+ * @param address the slave address the lcd is registered on
*/
SSD1327 (int bus, int address);
+ /**
+ * SSD1327 destructor
+ */
~SSD1327 ();
+ /**
+ * Draw an image, see examples/python/make_oled_pic.py for an
+ * explanation on how the pixels are mapped to bytes
+ *
+ * @param data the buffer to read
+ * @param bytes the amount of bytes to read from the pointer
+ * @return Result of operation
+ */
mraa_result_t draw(uint8_t *data, int bytes);
-
- // virtual methods
- mraa_result_t write (std::string msg);
- mraa_result_t setCursor (int row, int column);
- mraa_result_t clear ();
- mraa_result_t home ();
+ /**
+ * Set gray level for LCD panel
+ *
+ * @param gray level from 0-255
+ * @return Result of operation
+ */
mraa_result_t setGrayLevel (uint8_t level);
+ /**
+ * Write a string to LCD
+ *
+ * @param msg The std::string to write to display, note only ascii
+ * chars are supported
+ * @return Result of operation
+ */
+ mraa_result_t write(std::string msg);
+ /**
+ * Set cursor to a coordinate
+ *
+ * @param row The row to set cursor to
+ * @param column The column to set cursor to
+ * @return Result of operation
+ */
+ mraa_result_t setCursor(int row, int column);
+ /**
+ * Clear display from characters
+ *
+ * @return Result of operatio
+ */
+ mraa_result_t clear();
+ /**
+ * Return to coordinate 0,0
+ *
+ * @return Result of operation
+ */
+ mraa_result_t home();
private:
mraa_result_t writeChar (mraa_i2c_context ctx, uint8_t value);