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/
Diff: main.cpp
- 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); + + } + */ + + + + +