Novo

Dependencies:   mbed

Fork of LukaIElmir by tim003 tim003

DotMatrix.h

Committer:
tim003
Date:
2014-05-26
Revision:
5:654e3398c1ef
Parent:
4:ba24ce878e87
Child:
6:dd675b967b60

File content as of revision 5:654e3398c1ef:

#include "mbed.h"
#include "MatrixSPI.h"
#include <string>
#include <vector>
#include "Znak.h"
#ifndef DOTMATRIX_H
#define DOTMATRIX_H

enum ModPrikazivanja{scroll, char_by_char, live_input};

class DotMatrix{
    
public:
    DotMatrix(PinName data_input = dp2, PinName clock = dp6, PinName loadcs = dp24)
    :spi(data_input, clock, loadcs), turnedON(false), mod(scroll), char_trenutni(0),
    char_offset(0), repeat(true), brzina_ms(1000)
    {
        for(int i = 0; i < 8; i++) buffer[i] = 0;
    }
    
    void refresh();
    void setIntensity(float jacina);
    void setSpeed_ms(int ms);
    void turnON();
    void turnOFF();
    void PromijeniRecenicu(string recenica){
        this->recenica =  recenica;
    }
    void NadodajNaRecenicu(char c){
        recenica += c;   
    }
    void NadodajNaRecenicu(string str){
        recenica += str;   
    }
    void PromijeniMod(ModPrikazivanja mod){
        if(this->mod != mod){
            this->mod = mod;
            attach();   
        }   
    }
    ModPrikazivanja dajMod() const{
        return mod;   
    }
    void SetRepeat(bool r){
     repeat = r;   
    }
    
    bool GetRepeat() const{
        return repeat;   
    }
    
    void inicijaliziraj(){
        znakovi[0] = Znak(0x7e, 0x11, 0x11, 0x7e);
        znakovi[1] = Znak(0x7e, 0x49, 0x49, 0x36);
        znakovi[2] = Znak(0x3e, 0x41, 0x41, 0x22);
        znakovi[3] = Znak(0x7f, 0x41, 0x41, 0x3e);
        
    }
    void setChar(char c, int offset)
    {
        int index = c - 'A';
        if(offset < 0)
        {
            for(int i = 0; i < znakovi[index].vel + offset; i++)
            {
                buffer[i] = znakovi[index].niz[i - offset];   
            }  
        }   
        else 
        {
            for(int i = offset; i < 8 && i < znakovi[index].vel + offset; i++)
            {
                buffer[i] = znakovi[index].niz[i - offset];   
            }
        }
        
    }
    
    void displaySingleChar(char c){
        setChar(c, 2);   
        refresh();
    }
    
    int buffer[8];
    Znak znakovi[4];
private:
    void attach();
    void prikaziScroll(){}
    void prikaziCBC(){
        if(char_trenutni == recenica.size()) refresh();
        else {
            displaySingleChar(recenica[char_trenutni]);
            char_trenutni++;
            if(char_trenutni ==  recenica.size() && repeat)
            char_trenutni = 0; 
            
        }
    }    
    
    MatrixSPI spi;
    
    bool turnedON;
    string recenica;
    ModPrikazivanja mod;
    int char_trenutni, char_offset;
    Ticker ticker;
    //bool isAttached potrebno ako se ticker ne može 2. detachirati... 
    bool repeat;
    int brzina_ms;
};


#endif //DotMatrix_h