Dependencies:   PixelArray WS2812 mbed

[OLD - NOT FINISHED CODE]

Final code for the Pong Table Code can be found here: https://developer.mbed.org/teams/ASE/code/frdm_pong_table_controller/

main.cpp

Committer:
alikin01
Date:
2017-02-17
Revision:
0:e610b1d38e80
Child:
1:58c735e369b1

File content as of revision 0:e610b1d38e80:

        
#include "mbed.h"
#include "WS2812.h"
#include "PixelArray.h"

Serial pc(USBTX, USBRX);


DigitalIn sw2(SW2);

#define WS2812_BUF 112
#define NUM_COLORS 6
#define NUM_LEDS_PER_COLOR 1

//-------- Colours -----------
#define RED 0x2f0000
#define YELLOW 0x2f2f00
#define GREEN 0x002f00
#define LIGHTBLUE 0x002f2f
#define DARKBLUE 0x00002f
#define PINK 0x2f002f
#define OFF 0x000000
#define WHITE 0xffffff
#define ARMBLUE 0x128BAB


bool seg1A, seg1B, seg1C, seg1D, seg1E, seg1F, seg1G;
int seg1Array[112];
int MainArray[10][122];

//void write_8Seg(int num);
PixelArray px(WS2812_BUF);

// See the program page for information on the timing numbers
// The given numbers are for the K64F
WS2812 ws(D9, WS2812_BUF, 0, 5, 5, 0);


void write_7Seg(int num){
    
    switch (num)
    {
        case 0 :    
            // Off
            seg1A = 0;
            seg1B = 0;
            seg1C = 0;
            seg1D = 0;
            seg1E = 0;
            seg1F = 0;
            seg1G = 0;
               
            for (int i = 0; i < WS2812_BUF; i++) {  

                if (i < 16)
                {
                    MainArray[0][i] = seg1A;
                }          
                                
                if ( i >= 16 && i < 32)
                {
                    MainArray[0][i] = seg1B; 
                }
                                
                if (i >= 32 && i < 48)
                {
                    MainArray[0][i] = seg1C; 
                }
                            
                if (i >= 48 && i < 64)
                {
                    MainArray[0][i]= seg1D; 
                }
                            
                if ( i >= 64 && i < 80)
                {
                    MainArray[0][i] = seg1E; 
                }
                            
                if (i >= 80 && i < 96)
                {
                    MainArray[0][i] = seg1F;
                }
                            
                if ( i >= 96 && i < 112)
                {
                    MainArray[0][i] = seg1G;
                }    
            
                }// FOR LOOP
            break;
        
        case 1 :   
            // 1
            seg1A = 0;
            seg1B = 1;
            seg1C = 1;
            seg1D = 0;
            seg1E = 0;
            seg1F = 0;
            seg1G = 0;   
             
            for (int i = 0; i < WS2812_BUF; i++) {  

                if (i < 16)
                {
                    MainArray[1][i] = seg1A;
                }          
                                
                if ( i >= 16 && i < 32)
                {
                    MainArray[1][i] = seg1B; 
                }
                                
                if (i >= 32 && i < 48)
                {
                    MainArray[1][i] = seg1C; 
                }
                            
                if (i >= 48 && i < 64)
                {
                    MainArray[1][i]= seg1D; 
                }
                            
                if ( i >= 64 && i < 80)
                {
                    MainArray[1][i] = seg1E; 
                }
                            
                if (i >= 80 && i < 96)
                {
                    MainArray[1][i] = seg1F;
                }
                            
                if ( i >= 96 && i < 112)
                {
                    MainArray[1][i] = seg1G;
                }    
            
                }// FOR LOOP 
            break;
        
        case 2 :   
            // 2
            seg1A = 1;
            seg1B = 1;
            seg1C = 0;
            seg1D = 1;
            seg1E = 1;
            seg1F = 0;
            seg1G = 1;  
            
            for (int i = 0; i < WS2812_BUF; i++) {  

                if (i < 16)
                {
                    MainArray[2][i] = seg1A;
                }          
                            
                if ( i >= 16 && i < 32)
                {
                    MainArray[2][i] = seg1B; 
                }
                            
                if (i >= 32 && i < 48)
                {
                    MainArray[2][i] = seg1C; 
                }
                        
                if (i >= 48 && i < 64)
                {
                    MainArray[2][i]= seg1D; 
                }
                            
                if ( i >= 64 && i < 80)
                {
                    MainArray[2][i] = seg1E; 
                }
                            
                if (i >= 80 && i < 96)
                {
                    MainArray[2][i] = seg1F;
                }
                            
                if ( i >= 96 && i < 112)
                {
                    MainArray[2][i] = seg1G;
                }    
            
                }// FOR LOOP    
            break;
            
        case 3 :
            // 3
            seg1A = 1;
            seg1B = 1;
            seg1C = 1;
            seg1D = 1;
            seg1E = 0;
            seg1F = 0;
            seg1G = 1;
            
            for (int i = 0; i < WS2812_BUF; i++) {  

                if (i < 16)
                {
                    MainArray[3][i] = seg1A;
                }          
                            
                if ( i >= 16 && i < 32)
                {
                    MainArray[3][i] = seg1B; 
                }
                            
                if (i >= 32 && i < 48)
                {
                    MainArray[3][i] = seg1C; 
                }
                        
                if (i >= 48 && i < 64)
                {
                    MainArray[3][i]= seg1D; 
                }
                            
                if ( i >= 64 && i < 80)
                {
                    MainArray[3][i] = seg1E; 
                }
                            
                if (i >= 80 && i < 96)
                {
                    MainArray[3][i] = seg1F;
                }
                            
                if ( i >= 96 && i < 112)
                {
                    MainArray[3][i] = seg1G;
                }    
            
                }// FOR LOOP              
            break;
        
        case 4:
            // 4
            seg1A = 0;
            seg1B = 1;
            seg1C = 1;
            seg1D = 0;
            seg1E = 0;
            seg1F = 1;
            seg1G = 1;   
            
            for (int i = 0; i < WS2812_BUF; i++) {  

                if (i < 16)
                {
                    MainArray[4][i] = seg1A;
                }          
                            
                if ( i >= 16 && i < 32)
                {
                    MainArray[4][i] = seg1B; 
                }
                            
                if (i >= 32 && i < 48)
                {
                    MainArray[4][i] = seg1C; 
                }
                        
                if (i >= 48 && i < 64)
                {
                    MainArray[4][i]= seg1D; 
                }
                            
                if ( i >= 64 && i < 80)
                {
                    MainArray[4][i] = seg1E; 
                }
                            
                if (i >= 80 && i < 96)
                {
                    MainArray[4][i] = seg1F;
                }
                            
                if ( i >= 96 && i < 112)
                {
                    MainArray[4][i] = seg1G;
                }    
            
                }// FOR LOOP     
            break;
          
        case 5:
            // 5
            seg1A = 1;
            seg1B = 0;
            seg1C = 1;
            seg1D = 1;
            seg1E = 0;
            seg1F = 1;
            seg1G = 1; 
            
            for (int i = 0; i < WS2812_BUF; i++) {  

                if (i < 16)
                {
                    MainArray[5][i] = seg1A;
                }          
                            
                if ( i >= 16 && i < 32)
                {
                    MainArray[5][i] = seg1B; 
                }
                            
                if (i >= 32 && i < 48)
                {
                    MainArray[5][i] = seg1C; 
                }
                        
                if (i >= 48 && i < 64)
                {
                    MainArray[5][i]= seg1D; 
                }
                            
                if ( i >= 64 && i < 80)
                {
                    MainArray[5][i] = seg1E; 
                }
                            
                if (i >= 80 && i < 96)
                {
                    MainArray[5][i] = seg1F;
                }
                            
                if ( i >= 96 && i < 112)
                {
                    MainArray[5][i] = seg1G;
                }    
            
                }// FOR LOOP          
            break;
            
        case 6:
            // 6
            seg1A = 1;
            seg1B = 0;
            seg1C = 1;
            seg1D = 1;
            seg1E = 1;
            seg1F = 1;
            seg1G = 1;
            
            for (int i = 0; i < WS2812_BUF; i++) {  

                if (i < 16)
                {
                    MainArray[6][i] = seg1A;
                }          
                            
                if ( i >= 16 && i < 32)
                {
                    MainArray[6][i] = seg1B; 
                }
                            
                if (i >= 32 && i < 48)
                {
                    MainArray[6][i] = seg1C; 
                }
                        
                if (i >= 48 && i < 64)
                {
                    MainArray[6][i]= seg1D; 
                }
                            
                if ( i >= 64 && i < 80)
                {
                    MainArray[6][i] = seg1E; 
                }
                            
                if (i >= 80 && i < 96)
                {
                    MainArray[6][i] = seg1F;
                }
                            
                if ( i >= 96 && i < 112)
                {
                    MainArray[6][i] = seg1G;
                }    
            
                }// FOR LOOP  
            break;
           
        case 7:
            // 7
            seg1A = 1;
            seg1B = 1;
            seg1C = 1;
            seg1D = 0;
            seg1E = 0;
            seg1F = 0;
            seg1G = 0; 
         
            
            for (int i = 0; i < WS2812_BUF; i++) {  

                if (i < 16)
                {
                    MainArray[7][i] = seg1A;
                }          
                            
                if ( i >= 16 && i < 32)
                {
                    MainArray[7][i] = seg1B; 
                }
                            
                if (i >= 32 && i < 48)
                {
                    MainArray[7][i] = seg1C; 
                }
                        
                if (i >= 48 && i < 64)
                {
                    MainArray[7][i]= seg1D; 
                }
                            
                if ( i >= 64 && i < 80)
                {
                    MainArray[7][i] = seg1E; 
                }
                            
                if (i >= 80 && i < 96)
                {
                    MainArray[7][i] = seg1F;
                }
                            
                if ( i >= 96 && i < 112)
                {
                    MainArray[7][i] = seg1G;
                }    
            
                }// FOR LOOP 
                 
            break;
            
        case 8:
            // 8
            printf("Case 8");
            seg1A = 1;
            seg1B = 1;
            seg1C = 1;
            seg1D = 1;
            seg1E = 1;
            seg1F = 1;
            seg1G = 1;  
             
            for (int i = 0; i < WS2812_BUF; i++) {  

                if (i < 16)
                {
                    MainArray[8][i] = seg1A;
                }          
                            
                if ( i >= 16 && i < 32)
                {
                    MainArray[8][i] = seg1B; 
                }
                            
                if (i >= 32 && i < 48)
                {
                    MainArray[8][i] = seg1C; 
                }
                        
                if (i >= 48 && i < 64)
                {
                    MainArray[8][i]= seg1D; 
                }
                            
                if ( i >= 64 && i < 80)
                {
                    MainArray[8][i] = seg1E; 
                }
                            
                if (i >= 80 && i < 96)
                {
                    MainArray[8][i] = seg1F;
                }
                            
                if ( i >= 96 && i < 112)
                {
                    MainArray[8][i] = seg1G;
                }    
            
                }// FOR LOOP 
            break;
            
        case 9:
            // 9
            seg1A = 1;
            seg1B = 1;
            seg1C = 1;
            seg1D = 0;
            seg1E = 0;
            seg1F = 1;
            seg1G = 1; 
            
            for (int i = 0; i < WS2812_BUF; i++) {  

                if (i < 16)
                {
                    MainArray[9][i] = seg1A;
                }          
                            
                if ( i >= 16 && i < 32)
                {
                    MainArray[9][i] = seg1B; 
                }
                            
                if (i >= 32 && i < 48)
                {
                    MainArray[9][i] = seg1C; 
                }
                        
                if (i >= 48 && i < 64)
                {
                    MainArray[9][i]= seg1D; 
                }
                            
                if ( i >= 64 && i < 80)
                {
                    MainArray[9][i] = seg1E; 
                }
                            
                if (i >= 80 && i < 96)
                {
                    MainArray[9][i] = seg1F;
                }
                            
                if ( i >= 96 && i < 112)
                {
                    MainArray[9][i] = seg1G;
                }    
            
                }// FOR LOOP  
            break;
                  
        default :
   
            break;
            
        }                     
}

//NEEDS REWRITING 
void write_pbbuf(int line_num){
     
     for (int i = 0; i < WS2812_BUF; i++)
        {      
            if (MainArray[line_num][i] == 0)
            {
                px.Set(i,OFF);
            }
            
            if (MainArray[line_num][i] == 1)
            {
                px.Set(i,WHITE);
            }            
        }     
        ws.write(px.getBuf());
}


void setup(){
    
    for(int i=0;i<10;i++){
        write_7Seg(i);    
    }
}
    



int main(){          
       
    ws.setII(0xFF);
    ws.useII(WS2812::GLOBAL); 
    
    setup();
    while(1){
    for(int i =0;i<10;i++){
    write_pbbuf(i);
    wait_ms(1000);
    }
    }
    
    
    //write_pbbuf();
    //wait_ms(1000);
  
        
    }
        /*
    for(i=1;i<3;i++){       
    write_8Seg(1); 
    //printf(" %d , %d , %d , %d , %d , %d , %d\n", seg1A,seg1B,seg1C,seg1D,seg1E,seg1F,seg1G);
    for (i = 0; i < 112; i++){
        printf("%d",seg1Array[i]);
        }
    write_pbbuf();
    wait_ms(1000); 
    
    }
    */