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/

Revision:
0:e610b1d38e80
Child:
1:58c735e369b1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Feb 17 11:06:41 2017 +0000
@@ -0,0 +1,617 @@
+        
+#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); 
+    
+    }
+    */
+    
+ 
+    
+    
+