MAX6955 LED driver
MAX6955.cpp
- Committer:
- Kentaro Okuda
- Date:
- 2018-08-11
- Revision:
- 3:fbcb79f6e0a8
- Parent:
- 2:f6c4ed9cbf0e
File content as of revision 3:fbcb79f6e0a8:
/** * @file MAX6955.cpp */ #include "MAX6955.h" MAX6955::MAX6955(PinName sda, PinName scl, char driver): i2c_(sda, scl), driver_(driver){} static char getPrintableChar(char c) { if (c < 32 || c > 126) { // make sure its printable return 32; // if not, replace it with "space" } return c; } static char* getString(char* buffer) { static char i2cData[9]; i2cData[0] = 0x20; // first digit for (int i = 0; i < 8; i++) { i2cData[i+1] = getPrintableChar(buffer[i]); } return i2cData; } int MAX6955::write(char command, char data) { char i2cData[2]; i2cData[0] = command; i2cData[1] = data; int result = i2c_.write(driver_, i2cData, 2); wait(0.07); return result; } int MAX6955::writeS(char* buffer) { char* i2cData; i2cData = getString(buffer); int result = i2c_.write(driver_, i2cData, 9); wait(0.07); return result; } int MAX6955::init(void) { int result = 0; result = result + write(reg_decodeMode, 0x00); result = result + write(reg_scanLimit, 0x07); result = result + write(reg_configuration, 0x21); result = result + write(reg_globalIntensity, 0x08); result = result + write(reg_digitType, 0xFF); result = result + write(reg_displayTest, 0x00); return result; }