Library for Matrix Orbital VFD2041 display. Also useable for LCD2041 modules.
VFD.cpp@0:f0e9065504cd, 2012-03-05 (annotated)
- Committer:
- wsalis01
- Date:
- Mon Mar 05 03:42:10 2012 +0000
- Revision:
- 0:f0e9065504cd
- Child:
- 1:770ec826c555
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 | 0:f0e9065504cd | 5 | VFD::VFD() : _i2c(SDA, SCL) { |
wsalis01 | 0:f0e9065504cd | 6 | //Nothing to see here |
wsalis01 | 0:f0e9065504cd | 7 | } |
wsalis01 | 0:f0e9065504cd | 8 | |
wsalis01 | 0:f0e9065504cd | 9 | VFD::~VFD() { |
wsalis01 | 0:f0e9065504cd | 10 | //Nothing to see here |
wsalis01 | 0:f0e9065504cd | 11 | } |
wsalis01 | 0:f0e9065504cd | 12 | |
wsalis01 | 0:f0e9065504cd | 13 | int VFD::init() { |
wsalis01 | 0:f0e9065504cd | 14 | const char cmd[] = {254,160,0}; |
wsalis01 | 0:f0e9065504cd | 15 | int length = 3; |
wsalis01 | 0:f0e9065504cd | 16 | return write(cmd, length); |
wsalis01 | 0:f0e9065504cd | 17 | } |
wsalis01 | 0:f0e9065504cd | 18 | |
wsalis01 | 0:f0e9065504cd | 19 | int VFD::print(char * msg) { |
wsalis01 | 0:f0e9065504cd | 20 | int len = msg.size(); |
wsalis01 | 0:f0e9065504cd | 21 | char * cmd = new char(len); |
wsalis01 | 0:f0e9065504cd | 22 | memcpy(cmd, msg.data(), len); |
wsalis01 | 0:f0e9065504cd | 23 | return write(cmd, len); |
wsalis01 | 0:f0e9065504cd | 24 | } |
wsalis01 | 0:f0e9065504cd | 25 | |
wsalis01 | 0:f0e9065504cd | 26 | int VFD::autoScrollOn() { |
wsalis01 | 0:f0e9065504cd | 27 | const char cmd[] = {254, 81}; |
wsalis01 | 0:f0e9065504cd | 28 | int length = 2; |
wsalis01 | 0:f0e9065504cd | 29 | return write(cmd, length); |
wsalis01 | 0:f0e9065504cd | 30 | } |
wsalis01 | 0:f0e9065504cd | 31 | |
wsalis01 | 0:f0e9065504cd | 32 | int VFD::autoScrollOff() { |
wsalis01 | 0:f0e9065504cd | 33 | const char cmd[] = {254, 82}; |
wsalis01 | 0:f0e9065504cd | 34 | int length = 2; |
wsalis01 | 0:f0e9065504cd | 35 | return write(cmd, length); |
wsalis01 | 0:f0e9065504cd | 36 | } |
wsalis01 | 0:f0e9065504cd | 37 | |
wsalis01 | 0:f0e9065504cd | 38 | int VFD::lineWrapOn() { |
wsalis01 | 0:f0e9065504cd | 39 | const char cmd[] = {254, 67}; |
wsalis01 | 0:f0e9065504cd | 40 | int length = 2; |
wsalis01 | 0:f0e9065504cd | 41 | return write(cmd, length); |
wsalis01 | 0:f0e9065504cd | 42 | } |
wsalis01 | 0:f0e9065504cd | 43 | |
wsalis01 | 0:f0e9065504cd | 44 | int VFD::lineWrapOff() { |
wsalis01 | 0:f0e9065504cd | 45 | const char cmd[] = {254, 68}; |
wsalis01 | 0:f0e9065504cd | 46 | int length = 2; |
wsalis01 | 0:f0e9065504cd | 47 | return write(cmd, length); |
wsalis01 | 0:f0e9065504cd | 48 | } |
wsalis01 | 0:f0e9065504cd | 49 | |
wsalis01 | 0:f0e9065504cd | 50 | int VFD::setCursor(const int col, const int row) { |
wsalis01 | 0:f0e9065504cd | 51 | const char cmd[] = {254, 71, col, row}; |
wsalis01 | 0:f0e9065504cd | 52 | int length = 4; |
wsalis01 | 0:f0e9065504cd | 53 | return write(cmd, length); |
wsalis01 | 0:f0e9065504cd | 54 | } |
wsalis01 | 0:f0e9065504cd | 55 | |
wsalis01 | 0:f0e9065504cd | 56 | int VFD::clearScreen() { |
wsalis01 | 0:f0e9065504cd | 57 | const char cmd[] = {254, 88}; |
wsalis01 | 0:f0e9065504cd | 58 | int length = 2; |
wsalis01 | 0:f0e9065504cd | 59 | return write(cmd, length); |
wsalis01 | 0:f0e9065504cd | 60 | } |
wsalis01 | 0:f0e9065504cd | 61 | |
wsalis01 | 0:f0e9065504cd | 62 | int VFD::goHome() { |
wsalis01 | 0:f0e9065504cd | 63 | const char cmd[] = {254, 72}; |
wsalis01 | 0:f0e9065504cd | 64 | int length = 2; |
wsalis01 | 0:f0e9065504cd | 65 | return write(cmd, length); |
wsalis01 | 0:f0e9065504cd | 66 | } |
wsalis01 | 0:f0e9065504cd | 67 | |
wsalis01 | 0:f0e9065504cd | 68 | int VFD::initLargeNumbers() { |
wsalis01 | 0:f0e9065504cd | 69 | const char cmd[] = {254, 110}; |
wsalis01 | 0:f0e9065504cd | 70 | int length = 2; |
wsalis01 | 0:f0e9065504cd | 71 | return write(cmd, length); |
wsalis01 | 0:f0e9065504cd | 72 | } |
wsalis01 | 0:f0e9065504cd | 73 | |
wsalis01 | 0:f0e9065504cd | 74 | int VFD::setBrightness(const int val) { |
wsalis01 | 0:f0e9065504cd | 75 | if (val < 0 || val > 3) |
wsalis01 | 0:f0e9065504cd | 76 | return -1; |
wsalis01 | 0:f0e9065504cd | 77 | const char cmd[] = {254, 89, val}; |
wsalis01 | 0:f0e9065504cd | 78 | int length = 3; |
wsalis01 | 0:f0e9065504cd | 79 | return write(cmd, length); |
wsalis01 | 0:f0e9065504cd | 80 | } |
wsalis01 | 0:f0e9065504cd | 81 | |
wsalis01 | 0:f0e9065504cd | 82 | int VFD::write(const char * data, int length) { |
wsalis01 | 0:f0e9065504cd | 83 | int ret = _i2c.write(address, data, length); //Performs a complete write transaction |
wsalis01 | 0:f0e9065504cd | 84 | wait_us(625); |
wsalis01 | 0:f0e9065504cd | 85 | return ret; //Return I2C.write(...) return value |
wsalis01 | 0:f0e9065504cd | 86 | } |
wsalis01 | 0:f0e9065504cd | 87 | |
wsalis01 | 0:f0e9065504cd | 88 | int VFD::read(char * data, int length) { |
wsalis01 | 0:f0e9065504cd | 89 | int ret = _i2c.read(address, data, length); //Performs a complete write transaction |
wsalis01 | 0:f0e9065504cd | 90 | wait_us(625); |
wsalis01 | 0:f0e9065504cd | 91 | return ret; //Return I2C.write(...) return value |
wsalis01 | 0:f0e9065504cd | 92 | } |