#include "BluebitTM1650.h" /** Constructor, uses default values for the parameters * so could be called with no parameters. * aNumDigits - number of display digits (default = 4) */ TM1650::TM1650(unsigned int aNumDigits) { iNumDigits = (aNumDigits > TM1650_NUM_DIGITS) ? TM1650_NUM_DIGITS : aNumDigits; } /** Initialization * initializes the driver. Turns display on, but clears all digits. */ void TM1650::init() { iPosition = NULL; for (int i=0; i TM1650_MAX_BRIGHT) ? TM1650_MAX_BRIGHT : aValue; for (int i=0; i TM1650_MAX_BRIGHT) aValue = TM1650_MAX_BRIGHT; int step = (aValue < iBrightness) ? -1 : 1; unsigned int i = iBrightness; do { setBrightness(i); delay(50); i += step; } while (i!=aValue); } /** Turns display on or off according to aState */ void TM1650::displayState (bool aState) { if (aState) displayOn (); else displayOff(); } /** Turns the display on */ void TM1650::displayOn () // turn all digits on { if (!iActive) return; for (int i=0; i 9999) num = 9999; if(num < -1000) num = -999; sprintf(str, "%4d", num); displayString(str); } void TM1650::disComplexString(double num) { if(num > 9999) num = 9999; if(num < -1000) num = -999; int numInt = (int)num; disComplexString(numInt); } void TM1650::disComplexString(float num) { if(num > 9999) num = 9999; if(num < -1000) num = -999; int numInt = (int)num; disComplexString(numInt); } void TM1650::disComplexString(long num) { if(num > 9999) num = 9999; if(num < -1000) num = -999; int numInt = (int)num; disComplexString(numInt); } void TM1650::disComplexString(char *str) { // char strC; int strLength = strlen(str); char strDot[4]; char strChar[64]; char strDisplay[4]; char longStr[strLength + 1]; int num; for (int i =0; i < 4; i++) { strDot[i] = '0'; } for (int i =0; i < 4; i++) { strDisplay[i] = ' '; } for (int i =0; i < 64; i++) { strChar[i] = ' '; } for (int i =0; i < strLength + 1; i++) { longStr[i] = ' '; } num = 0; for (int i = 0; i < strlen(str); i++) { if (str[i] == '.') { strDot[i] = '1'; } else { strDot[i] = '0'; strChar[num] = str[i]; num++; } } switch (num) { case 1: strDisplay[0] = ' '; strDisplay[1] = ' '; strDisplay[2] = ' '; strDisplay[3] = strChar[num - 1]; displayString(strDisplay); displayDot(strDot); break; case 2: strDisplay[0] = ' '; strDisplay[1] = ' '; strDisplay[2] = strChar[num - 2]; strDisplay[3] = strChar[num - 1]; displayString(strDisplay); displayDot(strDot); break; case 3: strDisplay[0] = ' '; strDisplay[1] = strChar[num - 3]; strDisplay[2] = strChar[num - 2]; strDisplay[3] = strChar[num - 1]; displayString(strDisplay); displayDot(strDot); break; case 4: strDisplay[0] = strChar[num - 4]; strDisplay[1] = strChar[num - 3]; strDisplay[2] = strChar[num - 2]; strDisplay[3] = strChar[num - 1]; displayString(strDisplay); displayDot(strDot); break; default : longStr[0] = ' '; for (int i =0; i < strLength; i++) { longStr[i + 1] = str[i]; } if (displayRunning(longStr)) { while (displayRunningShift()) delay(500); } break; } }