Library for Matrix Orbital VFD2041 display. Also useable for LCD2041 modules.

Committer:
wsalis01
Date:
Mon Mar 05 21:20:40 2012 +0000
Revision:
2:b170a67a8dae
Parent:
1:770ec826c555
Child:
3:b96f8fff00e8
Added Doxygen documentation.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wsalis01 0:f0e9065504cd 1 #include "mbed.h"
wsalis01 0:f0e9065504cd 2 #include <string>
wsalis01 0:f0e9065504cd 3 #include "VFD.h"
wsalis01 0:f0e9065504cd 4
wsalis01 2:b170a67a8dae 5 /** VFD::VFD() Constructor
wsalis01 2:b170a67a8dae 6 * Initizlizes the I2C Bus
wsalis01 2:b170a67a8dae 7 */
wsalis01 0:f0e9065504cd 8 VFD::VFD() : _i2c(SDA, SCL) {
wsalis01 0:f0e9065504cd 9 //Nothing to see here
wsalis01 0:f0e9065504cd 10 }
wsalis01 0:f0e9065504cd 11
wsalis01 0:f0e9065504cd 12 VFD::~VFD() {
wsalis01 0:f0e9065504cd 13 //Nothing to see here
wsalis01 0:f0e9065504cd 14 }
wsalis01 0:f0e9065504cd 15
wsalis01 2:b170a67a8dae 16 /** VFD2041 initialization function
wsalis01 2:b170a67a8dae 17 * @returns I2C write() return value
wsalis01 2:b170a67a8dae 18 */
wsalis01 0:f0e9065504cd 19 int VFD::init() {
wsalis01 0:f0e9065504cd 20 const char cmd[] = {254,160,0};
wsalis01 0:f0e9065504cd 21 int length = 3;
wsalis01 0:f0e9065504cd 22 return write(cmd, length);
wsalis01 0:f0e9065504cd 23 }
wsalis01 0:f0e9065504cd 24
wsalis01 2:b170a67a8dae 25 /** Prints a string to the VFD
wsalis01 2:b170a67a8dae 26 * @param msg is a string to be printed to the display
wsalis01 2:b170a67a8dae 27 * @returns I2c write() return value
wsalis01 2:b170a67a8dae 28 */
wsalis01 1:770ec826c555 29 int VFD::print(string msg) {
wsalis01 2:b170a67a8dae 30 return write(msg.data(), msg.size());
wsalis01 0:f0e9065504cd 31 }
wsalis01 0:f0e9065504cd 32
wsalis01 2:b170a67a8dae 33 /** Turns on display autoscroll
wsalis01 2:b170a67a8dae 34 * @returns I2c write() return value
wsalis01 2:b170a67a8dae 35 */
wsalis01 0:f0e9065504cd 36 int VFD::autoScrollOn() {
wsalis01 0:f0e9065504cd 37 const char cmd[] = {254, 81};
wsalis01 0:f0e9065504cd 38 int length = 2;
wsalis01 0:f0e9065504cd 39 return write(cmd, length);
wsalis01 0:f0e9065504cd 40 }
wsalis01 0:f0e9065504cd 41
wsalis01 2:b170a67a8dae 42 /** Turns off diaplay autoscroll
wsalis01 2:b170a67a8dae 43 * @returns I2c write() return value
wsalis01 2:b170a67a8dae 44 */
wsalis01 0:f0e9065504cd 45 int VFD::autoScrollOff() {
wsalis01 0:f0e9065504cd 46 const char cmd[] = {254, 82};
wsalis01 0:f0e9065504cd 47 int length = 2;
wsalis01 0:f0e9065504cd 48 return write(cmd, length);
wsalis01 0:f0e9065504cd 49 }
wsalis01 0:f0e9065504cd 50
wsalis01 2:b170a67a8dae 51 /** Turns on display linewrap
wsalis01 2:b170a67a8dae 52 * @returns I2c write() return value
wsalis01 2:b170a67a8dae 53 */
wsalis01 0:f0e9065504cd 54 int VFD::lineWrapOn() {
wsalis01 0:f0e9065504cd 55 const char cmd[] = {254, 67};
wsalis01 0:f0e9065504cd 56 int length = 2;
wsalis01 0:f0e9065504cd 57 return write(cmd, length);
wsalis01 0:f0e9065504cd 58 }
wsalis01 0:f0e9065504cd 59
wsalis01 2:b170a67a8dae 60 /** Turns off display linewrap
wsalis01 2:b170a67a8dae 61 * @returns I2c write() return value
wsalis01 2:b170a67a8dae 62 */
wsalis01 0:f0e9065504cd 63 int VFD::lineWrapOff() {
wsalis01 0:f0e9065504cd 64 const char cmd[] = {254, 68};
wsalis01 0:f0e9065504cd 65 int length = 2;
wsalis01 0:f0e9065504cd 66 return write(cmd, length);
wsalis01 0:f0e9065504cd 67 }
wsalis01 0:f0e9065504cd 68
wsalis01 2:b170a67a8dae 69 /** Sets the cursor position on the display
wsalis01 2:b170a67a8dae 70 * @param col is the column to set the cursor
wsalis01 2:b170a67a8dae 71 * @param row is the row to set the cursor
wsalis01 2:b170a67a8dae 72 * @returns I2c write() return value
wsalis01 2:b170a67a8dae 73 */
wsalis01 0:f0e9065504cd 74 int VFD::setCursor(const int col, const int row) {
wsalis01 0:f0e9065504cd 75 const char cmd[] = {254, 71, col, row};
wsalis01 0:f0e9065504cd 76 int length = 4;
wsalis01 0:f0e9065504cd 77 return write(cmd, length);
wsalis01 0:f0e9065504cd 78 }
wsalis01 0:f0e9065504cd 79
wsalis01 2:b170a67a8dae 80 /** Clears the entire contents of the display
wsalis01 2:b170a67a8dae 81 * @returns I2c write() return value
wsalis01 2:b170a67a8dae 82 */
wsalis01 0:f0e9065504cd 83 int VFD::clearScreen() {
wsalis01 0:f0e9065504cd 84 const char cmd[] = {254, 88};
wsalis01 0:f0e9065504cd 85 int length = 2;
wsalis01 0:f0e9065504cd 86 return write(cmd, length);
wsalis01 0:f0e9065504cd 87 }
wsalis01 0:f0e9065504cd 88
wsalis01 2:b170a67a8dae 89 /** Sets the cursor position to col 0, row 0 ( top left position )
wsalis01 2:b170a67a8dae 90 * @returns I2c write() return value
wsalis01 2:b170a67a8dae 91 */
wsalis01 0:f0e9065504cd 92 int VFD::goHome() {
wsalis01 0:f0e9065504cd 93 const char cmd[] = {254, 72};
wsalis01 0:f0e9065504cd 94 int length = 2;
wsalis01 0:f0e9065504cd 95 return write(cmd, length);
wsalis01 0:f0e9065504cd 96 }
wsalis01 0:f0e9065504cd 97
wsalis01 2:b170a67a8dae 98 /** Initialize memory for the display of large numbers ( 4 rows high )
wsalis01 2:b170a67a8dae 99 * @returns I2c write() return value
wsalis01 2:b170a67a8dae 100 */
wsalis01 0:f0e9065504cd 101 int VFD::initLargeNumbers() {
wsalis01 0:f0e9065504cd 102 const char cmd[] = {254, 110};
wsalis01 0:f0e9065504cd 103 int length = 2;
wsalis01 0:f0e9065504cd 104 return write(cmd, length);
wsalis01 0:f0e9065504cd 105 }
wsalis01 0:f0e9065504cd 106
wsalis01 2:b170a67a8dae 107 /** Sets the brightness of the display
wsalis01 2:b170a67a8dae 108 * @param val determines the brightness as follows: 0 -> 100%, 1 -> 75%, 2 -> 50%, 3 -> 25%.
wsalis01 2:b170a67a8dae 109 * @returns I2c write() return value
wsalis01 2:b170a67a8dae 110 */
wsalis01 0:f0e9065504cd 111 int VFD::setBrightness(const int val) {
wsalis01 0:f0e9065504cd 112 if (val < 0 || val > 3)
wsalis01 0:f0e9065504cd 113 return -1;
wsalis01 0:f0e9065504cd 114 const char cmd[] = {254, 89, val};
wsalis01 0:f0e9065504cd 115 int length = 3;
wsalis01 0:f0e9065504cd 116 return write(cmd, length);
wsalis01 0:f0e9065504cd 117 }
wsalis01 0:f0e9065504cd 118
wsalis01 2:b170a67a8dae 119
wsalis01 2:b170a67a8dae 120 /** VFD::write
wsalis01 2:b170a67a8dae 121 * @param data is a non-null terminated array of characters to write to the display
wsalis01 2:b170a67a8dae 122 * @param length is the number of characters in the data array
wsalis01 2:b170a67a8dae 123 * @returns I2C write return value
wsalis01 2:b170a67a8dae 124 */
wsalis01 0:f0e9065504cd 125 int VFD::write(const char * data, int length) {
wsalis01 0:f0e9065504cd 126 int ret = _i2c.write(address, data, length); //Performs a complete write transaction
wsalis01 0:f0e9065504cd 127 wait_us(625);
wsalis01 0:f0e9065504cd 128 return ret; //Return I2C.write(...) return value
wsalis01 0:f0e9065504cd 129 }
wsalis01 0:f0e9065504cd 130
wsalis01 2:b170a67a8dae 131 /** VFD::read
wsalis01 2:b170a67a8dae 132 * @param data is a pointer to a char array to copy read data into
wsalis01 2:b170a67a8dae 133 * @param length is the number of characters to copy into the data array
wsalis01 2:b170a67a8dae 134 * @returns I2C read return value
wsalis01 2:b170a67a8dae 135 */
wsalis01 0:f0e9065504cd 136 int VFD::read(char * data, int length) {
wsalis01 0:f0e9065504cd 137 int ret = _i2c.read(address, data, length); //Performs a complete write transaction
wsalis01 0:f0e9065504cd 138 wait_us(625);
wsalis01 0:f0e9065504cd 139 return ret; //Return I2C.write(...) return value
wsalis01 0:f0e9065504cd 140 }