LPC1768 programm for the led matrix.

Dependencies:   BufferedSerial DS3231 mbed-rtos mbed

setMatrix.cpp

Committer:
JOEV
Date:
2016-10-12
Revision:
2:d5472e4a55bf
Child:
3:bd1352d4dbb8

File content as of revision 2:d5472e4a55bf:

#include "initalize.h"
#include "alphabet.h"
#include "mbed.h"
#include <string>

/*
 __   __        _      _    _        
 \ \ / /_ _ _ _(_)__ _| |__| |___ ___
  \ V / _` | '_| / _` | '_ \ / -_|_-<
   \_/\__,_|_| |_\__,_|_.__/_\___/__/

*/

int m_speed, m_loop;

int c_frame,                // frame-counter
    speed,                  // Variable for setting up, how fast the matrix would scroll
    ble,                    // Variable as "getting text from Bluetooth"-signal
    frames;                 // Variable for the scrolling of the text
string text_bluetooth (""); // will be empty, is going to be used for the bluetooth module
//------------------------------------------------------------------------------------------------------

DigitalOut  ds1(p5), oe1(p6), stcp1(p7), shcp1(p8), mr1(p9), led(LED1);
AnalogIn    ain(p20);
Ticker      tick;
Serial pc(USBTX, USBRX); // tx, rx
/*
DS    normal        Serial Data Output  Schreibt vor ob das LED 0 oder 1 ist.
OE    invertiert    Output-Enable       Aktiviert oder deaktiviert die LEDs.
SHCP  normal        Shift register clk  Setzt Position mit kurzen Impulsen fest.
STCP  normal        Storage reg. clk    Setzt Reihe mit kurzen Impulsen fest.
MR    invertiert    Master reset        resetet den Storage. Muss mit STCP angezeigt werden.
*/
//------------------------------------------------------------------------------------------------------
/*
  ___             _   _             
 | __|  _ _ _  __| |_(_)___ _ _  ___
 | _| || | ' \/ _|  _| / _ \ ' \(_-<
 |_| \_,_|_||_\__|\__|_\___/_||_/__/
                                    
*/

void Matrix(int m_length, int m_height, int *matrix_text,const string text_generic)
{
    init();
    wait(0.5);
    reset_srg();
    wait(0.05);
    setText(text_generic,matrix_text);
    wait(0.05);
    setMatrix(m_height, m_length, matrix_text);
}

void init()
{
    mr1 = 1;
    oe1 = 0;
    ds1 = 0;
    stcp1 = 0;
    shcp1 = 0;
    frames = 0;
    c_frame = 0;
    m_loop = 1;
}


void shift_srg()
{
    wait_ms(0.05);     // Perioden-Dauer 2ms, später verkürzen
    shcp1 = 1;
    wait_ms(0.05);
    shcp1 = 0;
}

void reset_srg()
{
    mr1 = 0;
    wait_ms(0.05);     // Reset-Puls 1ms, später verkürzen
    mr1 = 1;   
}


void setSpeed()
{
    // not possible with simple if-loops
    if(ain > 0.125f)  
        m_speed = 10;
    if(ain > 0.25f)   
        m_speed = 25;
    if(ain > 0.375f)  
        m_speed = 50;
    if(ain > 0.5f)    
        m_speed = 100;
    if(ain > 0.625f)  
        m_speed = 250;
    if(ain > 0.75f)   
        m_speed = 500;
    if(ain > 0.875f)  
        m_speed = 1000;
    if(ain > 0.97f)   
        m_speed = 2000;
}


void setMatrix(int m_height,int m_length, int *matrix_text)
{
    //bool row_temp[m_height];           // temporary array for matrix output
       
    while(1)
    {
        for(int frequency = 0; frequency < 50; frequency++)
        {
            for(int position = 0; position < m_length; position++)
            {
                for(int column = 0; column < m_length; column++)
                {
                    if(column == position)
                    {
                        ds1 = 1;
                    }
                    else
                    {
                        ds1 = 0;
                    }
                    shift_srg();
                }
                
                for(int shift_int = 0; shift_int < m_height; shift_int++)
                {
                    ds1 = (matrix_text[position] >> shift_int) & 1;
                    shift_srg();
                }
                stcp1 = 1;
                wait_ms(0.5);
                stcp1 = 0;
            }
        }
        frames++;
        if(frames == c_frame)
            frames = 0;
     }
}


void initArray(int const *letter, int size, int *matrix_text)
{
    c_frame = c_frame + 1;  // A small space, about 1 led column, is being added.
    
    for(int position = 0; position < size; position++)
    {
        matrix_text[c_frame] = letter[position];
        c_frame++;
    }
    matrix_text[c_frame] = 0x00;           
}

void setText(const string& text_dummy, int *matrix_text)      
// Used to identifiy which letter is in the set String-Position.                                  
// If it contains a specific letter, it will call another Function called "initArray" to fill up the array which is then used to show the letters on the Matrix
{
    for(int LetterPos = 0; LetterPos < text_dummy.size(); LetterPos++)
    {
        //Letters ------------------------
        if     (text_dummy.at(LetterPos) == 'A')
        {   
            initArray(A,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'a')
        {   
            initArray(a,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'B')
        {   
            initArray(B,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'b')
        {   
            initArray(b,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'C')
        {   
            initArray(C,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'c')
        {   
            initArray(c,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'D')
        {   
            initArray(D,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'd')
        {   
            initArray(d,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'E')
        {   
            initArray(E,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'e')
        {   
            initArray(e,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'F')
        {   
            initArray(F,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'f')
        {   
            initArray(f,3,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'G')
        {   
            initArray(G,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'g')
        {   
            initArray(g,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'H')
        {   
            initArray(H,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'h')
        {   
            initArray(h,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'I')
        {   
            initArray(I,3,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'i')
        {   
            initArray(i,3,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'J')
        {   
            initArray(J,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'j')
        {   
            initArray(j,3,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'K')
        {   
            initArray(K,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'k')
        {   
            initArray(k,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'L')
        {   
            initArray(L,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'l')
        {   
            initArray(l,3,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'M')
        {   
            initArray(M,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'm')
        {   
            initArray(m,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'N')
        {   
            initArray(N,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'n')
        {   
            initArray(n,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'O')
        {   
            initArray(O,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'o')
        {   
            initArray(o,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'P')
        {   
            initArray(P,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'p')
        {   
            initArray(p,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'Q')
        {   
            initArray(Q,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'q')
        {   
            initArray(q,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'R')
        {   
            initArray(R,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'r')
        {   
            initArray(r,3,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'S')
        {   
            initArray(S,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 's')
        {   
            initArray(s,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'T')
        {   
            initArray(T,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 't')
        {   
            initArray(t,3,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'U')
        {   
            initArray(U,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'u')
        {   
            initArray(u,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'V')
        {   
            initArray(V,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'v')
        {   
            initArray(v,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'W')
        {   
            initArray(W,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'w')
        {   
            initArray(w,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'X')
        {   
            initArray(X,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'x')
        {   
            initArray(x,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'Y')
        {   
            initArray(Y,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'y')
        {   
            initArray(y,5,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'Z')
        {   
            initArray(Z,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == 'z')
        {   
            initArray(z,4,matrix_text);   
        }
        // Numbers -----------------------
        else if(text_dummy.at(LetterPos) == '0')
        {   
            initArray(zero,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == '1')
        {   
            initArray(one,3,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == '2')
        {   
            initArray(two,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == '3')
        {   
            initArray(three,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == '4')
        {   
            initArray(four,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == '5')
        {   
            initArray(five,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == '6')
        {   
            initArray(six,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == '7')
        {   
            initArray(seven,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == '8')
        {   
            initArray(eight,4,matrix_text);   
        }
        else if(text_dummy.at(LetterPos) == '9')
        {   
            initArray(nine,4,matrix_text);
        }
        // Symbols -----------------------
        else if(text_dummy.at(LetterPos) == '!')
        {   
            initArray(exclam,1,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '?')
        {   
            initArray(quest,3,matrix_text);
        }
        else if(text_dummy.at(LetterPos) ==  34)
        {  
            initArray(quote,3,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '#')
        {   
            initArray(hash,5,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '$')
        {   
            initArray(dollar,5,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '%')
        {   
            initArray(prcent,7,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '&')
        {   
            initArray(_and,5,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '(')
        {   
            initArray(round_o,2,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == ')')
        {   
            initArray(round_c,2,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '*')
        {   
            initArray(star,5,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '+')
        {   
            initArray(plus,5,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '-')
        {   
            initArray(minus,3,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '=')
        {   
            initArray(_equal,3,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == ',')
        {   
            initArray(comma,2,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '.')
        {   
            initArray(point,1,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '/')
        {   
            initArray(slash,5,matrix_text);
        }
        else if(text_dummy.at(LetterPos) ==  58)
        {   
            initArray(d_point,1,matrix_text);
        }
        else if(text_dummy.at(LetterPos) ==  59)
        {   
            initArray(poicom,2,matrix_text);
        }
        else if(text_dummy.at(LetterPos) ==  95)
        {   
            initArray(undlin,4,matrix_text);
        }
        else if(text_dummy.at(LetterPos) ==  92)
        {   
            initArray(b_slash,5,matrix_text);
        }
        else if(text_dummy.at(LetterPos) ==  64)
        {   
            initArray(at,5,matrix_text);
        }
        else if(text_dummy.at(LetterPos) ==  62)
        {   
            initArray(more,4,matrix_text);
        }
        else if(text_dummy.at(LetterPos) ==  60)
        {   
            initArray(less,1,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '[')
        {   
            initArray(brack_o,2,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == ']')
        {   
            initArray(brack_c,2,matrix_text);
        }
        else if(text_dummy.at(LetterPos) ==  94)
        {   
            initArray(roof,3,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '{')
        {   
            initArray(brace_o,3,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '}')
        {   
            initArray(brace_c,3,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '~')
        {   
            initArray(wave,4,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '|')
        {   
            initArray(stick,1,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == '`')
        {   
            initArray(frapo,2,matrix_text);
        }
        else if(text_dummy.at(LetterPos) == ' ')
        {   
            initArray(space,3,matrix_text);
        }
    }
    c_frame += 3;
}