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

Committer:
wsalis01
Date:
Sat Mar 10 22:18:27 2012 +0000
Revision:
3:b96f8fff00e8
Parent:
2:b170a67a8dae
Child:
4:f17ce5ab5d01

        

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