Library for Matrix Orbital VFD2041 display. Also useable for LCD2041 modules.
Diff: VFD.cpp
- Revision:
- 2:b170a67a8dae
- Parent:
- 1:770ec826c555
- Child:
- 3:b96f8fff00e8
--- a/VFD.cpp Mon Mar 05 03:55:14 2012 +0000 +++ b/VFD.cpp Mon Mar 05 21:20:40 2012 +0000 @@ -2,6 +2,9 @@ #include <string> #include "VFD.h" +/** VFD::VFD() Constructor + * Initizlizes the I2C Bus + */ VFD::VFD() : _i2c(SDA, SCL) { //Nothing to see here } @@ -10,67 +13,101 @@ //Nothing to see here } +/** VFD2041 initialization function + * @returns I2C write() return value + */ int VFD::init() { const char cmd[] = {254,160,0}; int length = 3; return write(cmd, length); } +/** Prints a string to the VFD + * @param msg is a string to be printed to the display + * @returns I2c write() return value + */ int VFD::print(string msg) { - int len = msg.size(); - char * cmd = new char(len); - memcpy(cmd, msg.data(), len); - return write(cmd, len); + return write(msg.data(), msg.size()); } +/** Turns on display autoscroll + * @returns I2c write() return value + */ int VFD::autoScrollOn() { const char cmd[] = {254, 81}; int length = 2; return write(cmd, length); } +/** Turns off diaplay autoscroll + * @returns I2c write() return value + */ int VFD::autoScrollOff() { const char cmd[] = {254, 82}; int length = 2; return write(cmd, length); } +/** Turns on display linewrap + * @returns I2c write() return value + */ int VFD::lineWrapOn() { const char cmd[] = {254, 67}; int length = 2; return write(cmd, length); } +/** Turns off display linewrap + * @returns I2c write() return value + */ int VFD::lineWrapOff() { const char cmd[] = {254, 68}; int length = 2; return write(cmd, length); } +/** Sets the cursor position on the display + * @param col is the column to set the cursor + * @param row is the row to set the cursor + * @returns I2c write() return value + */ int VFD::setCursor(const int col, const int row) { const char cmd[] = {254, 71, col, row}; int length = 4; return write(cmd, length); } +/** Clears the entire contents of the display + * @returns I2c write() return value + */ int VFD::clearScreen() { const char cmd[] = {254, 88}; int length = 2; return write(cmd, length); } +/** Sets the cursor position to col 0, row 0 ( top left position ) + * @returns I2c write() return value + */ int VFD::goHome() { const char cmd[] = {254, 72}; int length = 2; return write(cmd, length); } +/** Initialize memory for the display of large numbers ( 4 rows high ) + * @returns I2c write() return value + */ int VFD::initLargeNumbers() { const char cmd[] = {254, 110}; int length = 2; return write(cmd, length); } +/** Sets the brightness of the display + * @param val determines the brightness as follows: 0 -> 100%, 1 -> 75%, 2 -> 50%, 3 -> 25%. + * @returns I2c write() return value + */ int VFD::setBrightness(const int val) { if (val < 0 || val > 3) return -1; @@ -79,12 +116,23 @@ return write(cmd, length); } + +/** VFD::write + * @param data is a non-null terminated array of characters to write to the display + * @param length is the number of characters in the data array + * @returns I2C write return value + */ int VFD::write(const char * data, int length) { int ret = _i2c.write(address, data, length); //Performs a complete write transaction wait_us(625); return ret; //Return I2C.write(...) return value } +/** VFD::read + * @param data is a pointer to a char array to copy read data into + * @param length is the number of characters to copy into the data array + * @returns I2C read return value + */ int VFD::read(char * data, int length) { int ret = _i2c.read(address, data, length); //Performs a complete write transaction wait_us(625);