From 14d709e30b8f65853d12d41748cfb5341739d051 Mon Sep 17 00:00:00 2001 From: Georges Kesseler Date: Wed, 31 Jul 2013 00:09:14 +0200 Subject: [PATCH] Non tested pattern player for ideas how to do stuff --- PoC/cheap_random/patternplayer.ino | 185 +++++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 PoC/cheap_random/patternplayer.ino diff --git a/PoC/cheap_random/patternplayer.ino b/PoC/cheap_random/patternplayer.ino new file mode 100644 index 0000000..48b68a7 --- /dev/null +++ b/PoC/cheap_random/patternplayer.ino @@ -0,0 +1,185 @@ +// testcolors demo for RGBmatrixPanel library. +// Renders 512 colors on a 16x32 RGB LED matrix. +// Library supports 4096 colors, but there aren't that many pixels! + +#include // Core graphics library +#include // Hardware-specific library + +#define CLK 8 // MUST be on PORTB! +#define LAT A3 +#define OE 9 +#define A A0 +#define B A1 +#define C A2 +RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false); + +void setup() { + matrix.begin(); + + //myWindows(random(1,21)); + int window = 13; + int brightness = 255; + int del = 100; + // White is 7,7,7 (3bit) 255,255,255 (8bit) + uint8_t red=255, green=255, blue=255; + +int x=0; +int y=0; +int pos=0; +int patternSwitcher=0; +while ( true ) { + switch(patternSwitcher) { + case 0: + case 1: + case 2: + // scan through line by line from top to bottom + myWindows(xyToWindow(x,y), brightness, red, green, blue); + if(x++>3) { + x=0; + if(y++>4) { + y=0; + patternSwitcher++; + } + } + break; + case 3: + case 4: + // move a pixel around a path + int path[4*5] = { 1, 6,11,16, + 17,18,19,20, + 15,10, 5, + 4, 3, 2, + 7,12,13,14,9,8, + 7,12,13,14, + 15,10,5,4,3,2, + 0}; + myWindows(path[pos], brightness, red, green, blue); + pos++; + if(path[pos]==0 { pos=0; patternSwitcher++; } + break; + case 5: + case 6: + case 7: + case 8: + // top bottom line wiper + for(x=0;x<4;x++) + myWindows(xyToWindow(x,y), brightness, red, green, blue); + if(y++>4) { + y=0; + patternSwitcher++; + } + default: + patternSwitcher=0; + break; + } + delay(del); + // fill the screen with 'black' + matrix.fillScreen(matrix.Color888(0, 0, 0)); + matrix.swapBuffers(false); +} + +} + +int xyToWindow(int x, int y) { + // this uses the building true xy coords like a screen + // so pixel 0,0 is top left + // pixel 3,4 is bottom right + // 1,0->6 =1 + x*5 + y + // 3,0->16=1 x x*5 + // 2,3->14=1 +x*5 +y + return (1+x*5+y); +} + + int myWindows (int w, int br, int r, int g, int b){ + +switch (w) { + case 1: + // Window 1 + matrix.fillRect(1,12,4,3, matrix.Color888(r,g,b)); + break; + case 2: + // Window 2 + matrix.fillRect(7,12,4,3, matrix.Color888(r,g,b)); + break; + case 3: + // Window 3 + matrix.fillRect(13,12,4,3, matrix.Color888(r,g,b)); + break; + case 4: + // Window 4 + matrix.fillRect(19,12,4,3, matrix.Color888(r,g,b)); + break; + case 5: + // Window 5 + matrix.fillRect(25,12,4,3, matrix.Color888(r,g,b)); + break; + case 6: + // Window 6 + matrix.fillRect(1,8,4,3, matrix.Color888(r,g,b)); + break; + case 7: + // Window 7 + matrix.fillRect(7,8,4,3, matrix.Color888(r,g,b)); + break; + case 8: + // Window 8 + matrix.fillRect(13,8,4,3, matrix.Color888(r,g,b)); + break; + case 9: + // Window 9 + matrix.fillRect(19,8,4,3, matrix.Color888(r,g,b)); + break; + case 10: + // Window 10 + matrix.fillRect(25,8,4,3, matrix.Color888(r,g,b)); + break; + case 11: + // Window 11 + matrix.fillRect(1,4,4,3, matrix.Color888(r,g,b)); + break; + case 12: + // Window 12 + matrix.fillRect(7,4,4,3, matrix.Color888(r,g,b)); + break; + case 13: + // Window 13 + matrix.fillRect(13,4,4,3, matrix.Color888(r,g,b)); + break; + case 14: + // Window 14 + matrix.fillRect(19,4,4,3, matrix.Color888(r,g,b)); + break; + case 15: + // Window 15 + matrix.fillRect(25,4,4,3, matrix.Color888(r,g,b)); + break; + case 16: + // Window 16 + matrix.fillRect(1,0,4,3, matrix.Color888(r,g,b)); + break; + case 17: + // Window 17 + matrix.fillRect(7,0,4,3, matrix.Color888(r,g,b)); + break; + case 18: + // Window 18 + matrix.fillRect(13,0,4,3, matrix.Color888(r,g,b)); + break; + case 19: + // Window 19 + matrix.fillRect(19,0,4,3, matrix.Color888(r,g,b)); + break; + case 20: + // Window 20 + matrix.fillRect(25,0,4,3, matrix.Color888(r,g,b)); + break; + + default: + break; +} + } + +void loop() { + // do nothing +} +