Library for Matrix Orbital VFD2041 display. Also useable for LCD2041 modules.
VFD.cpp@2:b170a67a8dae, 2012-03-05 (annotated)
- 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?
User | Revision | Line number | New 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 | } |