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

Committer:
wsalis01
Date:
Mon Mar 05 03:55:14 2012 +0000
Revision:
1:770ec826c555
Parent:
0:f0e9065504cd
Child:
2:b170a67a8dae
Initial Library Publish.

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 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 1:770ec826c555 19 int VFD::print(string 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 }