From 58d91ed9d250fd75c6700518c725eb658fb0119c Mon Sep 17 00:00:00 2001 From: Georges Kesseler Date: Sun, 4 Aug 2013 19:00:49 +0200 Subject: [PATCH] untested example of RGB 7 segments simulated on the LED matrix --- PoC/rgb7seg/rgb7seg.ino | 196 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 PoC/rgb7seg/rgb7seg.ino diff --git a/PoC/rgb7seg/rgb7seg.ino b/PoC/rgb7seg/rgb7seg.ino new file mode 100644 index 0000000..d3897a4 --- /dev/null +++ b/PoC/rgb7seg/rgb7seg.ino @@ -0,0 +1,196 @@ +// simulates RGB 7 segments 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; + + +while ( true ) { + myWindows(16, brightness, red, green, blue); + delay(del); + // fill the screen with 'black' + matrix.fillScreen(matrix.Color888(0, 0, 0)); + matrix.swapBuffers(false); +} + +} + + +intRGB7seg (int displayNR, int segment, int r, int g, int b) { +// segment is standard numbered, top=0, DP=7 +// displayNR is the display number, counted from the left 0, 1, 2 ,3 +// simulated 7seg is like this: +//|1 1 1 1 1 1 0 0 0 | +//|5 4 3 2 1 0 9 8 7 - - - - - - 0| +//|. 0 0 . . X X . X X X X X X X X| 0 +//|5 d0 1 X d1 X X X | 1 +//|5 1 X X X W X W | 2 +//|. 6 6 . , X X . X X | 3 +//|4 2 X X X 11 X 16 | 4 +//|4 2 X X X X | 5 +//|. 3 3 7 . X X . X X X X X X X X| 6 +//|X X X X | +//|X W X W X W X W | +//|X X X X | +//|X 2 X 7 X 12 X 17 | +//|X X X X | +//|X X X X X X X X X X X X X X X X| +int d; + switch (displayNR) { + case 0: + d=12; + break; + case 1: + d=8; + break; + case 2: + d=4; + break; + case 3: + d=0; + break; + default: + return; + } + switch (segment) { + case 0: + matrix.fillRect(0,d+1,0,d+2, matrix.Color888(r,g,b)); + break; + case 1: + matrix.fillRect(1,d,2,d, matrix.Color888(r,g,b)); + break; + case 2: + matrix.fillRect(4,d,5,d, matrix.Color888(r,g,b)); + break; + case 3: + matrix.fillRect(6,d+1,6,d+2, matrix.Color888(r,g,b)); + break; + case 4: + matrix.fillRect(4,d+3,5,d+3, matrix.Color888(r,g,b)); + break; + case 5: + matrix.fillRect(1,d+3,2,d+3, matrix.Color888(r,g,b)); + break; + case 6: + matrix.fillRect(3,d+1,3,d+2, matrix.Color888(r,g,b)); + break; + case 7: + matrix.fillRect(7,d,7,d, matrix.Color888(r,g,b)); + break; + default: + return; + } +} + + 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 +} +