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); } */