Blue LED matrix (8x16) program. Gets text string through bluetooth and displays it on led matrix. Also has a clock function- get system time from a phone through bluetooth and enters clock mode. In clock mode it acts as a clock showing hours and minutes and blinking led every second. Clock mode can be broken if a text string is received through bluetooth.

Dependencies:   mbed

text.cpp

Committer:
DaniusKalv
Date:
2014-11-01
Revision:
8:f74b8d6f00d0
Parent:
7:ca5ed7936472
Child:
9:ed7e8a6fc537

File content as of revision 8:f74b8d6f00d0:

#include "text.h"
#include "mbed.h"
#include "letters.h"

text::text(): pc(USBTX, USBRX), local("local"){
};

void text::generate(string input){
    stringLength = input.length();
    if (stringLength == 0) return;
    pc.printf("\r\nStarting generation, string length: %i", stringLength);
    fp = fopen("/local/out.txt", "w");
    pc.printf("\r\nOpened a text file out.txt");
    calcLength(input);
    fprintf(fp, "%i\r\n", length);
    for (int i = 0; i < 16; i++){
        fprintf(fp, "00000000\r\n");
    }
    for (int i = 0; i < stringLength; i++){
        pc.printf("\r\nTaking letter ");
        pc.putc(input.at(i));
        letters(input.at(i));
        pc.printf("\r\nDone with ");
        pc.putc(input.at(i));
        tempCheck();
        for (int j = 0; j < letSize; j++){
            for (int g = 7; g > (-1); g--){
                fprintf(fp, "%i", temp[g][j]);
            }
            fprintf(fp,"\r\n");
        } 
        fprintf(fp, "00000000\r\n");    
    } 
    for (int i = 0; i < 15; i++){
        fprintf(fp, "00000000\r\n");
    }
    fclose(fp);   
}

void text::letters(char take){
    
    switch (take){
        case 'A': 
            letSize = 4;
            memcpy(temp, letterA, sizeof(letterA));
            break;
        case 'B':
            letSize = 4;
            memcpy(temp, letterB, sizeof(letterB));
            break;
        case 'C':
            letSize = 4;
            memcpy(temp, letterC, sizeof(letterC));
            break;
        case 'D':
            letSize = 4;
            memcpy(temp, letterD, sizeof(letterD));
            break;
        case 'E':
            letSize = 4;
            memcpy(temp, letterE, sizeof(letterE));
            break;
        case 'F':
            letSize = 4;
            memcpy(temp, letterF, sizeof(letterF));
            break;
        case 'G':
            letSize = 4;
            memcpy(temp, letterG, sizeof(letterG));
            break;
        case 'H':
            letSize = 4;
            memcpy(temp, letterH, sizeof(letterH));
            break;
        case 'I':
            letSize = 1;
            memcpy(temp, letterI, sizeof(letterI));
            break;
        case 'J':
            letSize = 3;
            memcpy(temp, letterJ, sizeof(letterJ));
            break;
        case 'K':
            letSize = 4;
            memcpy(temp, letterK, sizeof(letterK));
            break;
        case 'L':
            letSize = 4;
            memcpy(temp, letterL, sizeof(letterL));
            break;
        case 'M':
            letSize = 5;
            memcpy(temp, letterM, sizeof(letterM));
            break;
        case 'N':
            letSize = 4;
            memcpy(temp, letterN, sizeof(letterN));
            break;
        case 'O':
            letSize = 4;
            memcpy(temp, letterO, sizeof(letterO));
            break;
        case 'P':
            letSize = 4;
            memcpy(temp, letterP, sizeof(letterP));
            break;
        case 'R':
            letSize = 4;
            memcpy(temp, letterR, sizeof(letterR));
            break;
        case 'S':
            letSize = 4;
            memcpy(temp, letterS, sizeof(letterS));
            break;
        case 'T':
            letSize = 5;
            memcpy(temp, letterT, sizeof(letterT));
            break;
        case 'U':
            letSize = 4;
            memcpy(temp, letterU, sizeof(letterU));
            break;
        case 'V':
            letSize = 5;
            memcpy(temp, letterV, sizeof(letterV));
            break;
        case 'Z':
            letSize = 4;
            memcpy(temp, letterZ, sizeof(letterZ));
            break;
        case 'W':
            letSize = 5;
            memcpy(temp, letterW, sizeof(letterW));
            break;
        case 'Y':
            letSize = 5;
            memcpy(temp, letterY, sizeof(letterY));
            break;
        case 'X':
            letSize = 5;
            memcpy(temp, letterX, sizeof(letterX));
            break;
        case ' ':
            letSize = 3;
            memcpy(temp, letterGap, sizeof(letterGap));
            break;
        default :
            letSize = 1;
            memcpy(temp, letterDef, sizeof(letterDef));
    }
}    

void text::tempCheck(){
    pc.printf("\r\n");
        for (int i = 0; i < 8; i++){
            pc.printf("0x%02x ", temp[i]);
        }
    }
    pc.printf("\r\n");
}

void text::calcLength(string input){
    length = 0;
    for (int i = 0; i < stringLength; i++){
        letters(input.at(i));
        length += letSize + 1;
    }   
    length += 31;  
}