Main Page | Modules | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

WS2812 - Code example
[WS2812 LED - Procedures for led matrix based on WS2812]

 #include <otSerial.h>
 #include <otTimer.h>
 #include <otMalloc.h>
 #include <otWS2812.h>
 #include <otPrintf.h>
 
 otWS2812 ledPanel;
 
 void setup()
 {
        // Setup the UART0 used by printf
        UartEnableSignals(UART0);
        UartSetBaud(UART0, 115200);
        _initMalloc();
        ledPanel = otWS2812(12, 16, 16);
        ledPanel.mirror(true, true);
        ledPanel.setOffset(1);
        // Init printf
        setStdout(1024, UART0); // printf output is now directed on UART0
 }
 
 void loop()
 {
        U8      r, g, b;
        printf("Start ...\n");
        for(int l = 1; l < 10; l++)
        {
                printf("L = %2d\n", l);
                for(int c = 0; c < 7; c++)
                {
                        switch(c)
                        {
                                case 0: r = l; g = 0; b = 0;  break;
                                case 1: r = 0; g = l; b = 0;  break;
                                case 2: r = 0; g = 0; b = l;  break;
                                case 3: r = l; g = 0; b = l;  break;
                                case 4: r = 0; g = l; b = l;  break;
                                case 5: r = l; g = l; b = 0;  break;
                                case 6: r = l; g = l; b = l;  break;
                        }
                        for(int i = 10; i >= 0; i--)
                        {
                                ledPanel.rectFill(0 + i, 0 + i, 15 - i, 15 - i, 10, 0, 0);
                                ledPanel.show(); DelayMs(20);
                                ledPanel.rectFill(0 + i, 0 + i, 15 - i, 15 - i, 0, 0, 0);
                                ledPanel.show();
                        }
                        for(int i = 0; i < 12; i++)
                        {
                                ledPanel.rectFill(0 + i, 0 + i, 15 - i, 15 - i, r, g, b);
                                ledPanel.show(); DelayMs(20);
                                ledPanel.rectFill(0 + i, 0 + i, 15 - i, 15 - i, 0, 0, 0);
                                ledPanel.show();
                        }
                }
        }
        int l = 10;
        for(int c = 0; c < 7; c++)
        {
                switch(c)
                {
                        case 0: r = l; g = 0; b = 0;  break;
                        case 1: r = 0; g = l; b = 0;  break;
                        case 2: r = 0; g = 0; b = l;  break;
                        case 3: r = l; g = 0; b = l;  break;
                        case 4: r = 0; g = l; b = l;  break;
                        case 5: r = l; g = l; b = 0;  break;
                        case 6: r = l; g = l; b = l;  break;
                }
                for(int x = 0; x < 16; x++)
                {
                        ledPanel.line(0, 0, x, 15, r, g, b);
                        ledPanel.show(); DelayMs(20);
                        ledPanel.line(0, 0, x, 15, 0, 0, 0);
                        ledPanel.show(); 
                }
                for(int x = 1; x < 16; x++)
                {
                        ledPanel.line(0, 0, 15, 15 - x, r, g, b);
                        ledPanel.show(); DelayMs(20);
                        ledPanel.line(0, 0, 15, 15 - x, 0, 0, 0);
                        ledPanel.show(); 
                }
        }
        
        l = 10;
        for(int c = 0; c < 7; c++)
        {
                switch(c)
                {
                        case 0: r = l; g = 0; b = 0;  break;
                        case 1: r = 0; g = l; b = 0;  break;
                        case 2: r = 0; g = 0; b = l;  break;
                        case 3: r = l; g = 0; b = l;  break;
                        case 4: r = 0; g = l; b = l;  break;
                        case 5: r = l; g = l; b = 0;  break;
                        case 6: r = l; g = l; b = l;  break;
                }
                for(int ray = 2; ray < 8; ray++)
                {
                        ledPanel.circle(7, 7, ray, r, g, b);
                        ledPanel.show(); DelayMs(20);
                        ledPanel.circle(7, 7, ray, 0, 0, 0);
                        ledPanel.show(); 
                }
                for(int ray = 7; ray >= 2; ray--)
                {
                        ledPanel.circle(7, 7, ray, r, g, b);
                        ledPanel.show(); DelayMs(20);
                        ledPanel.circle(7, 7, ray, 0, 0, 0);
                        ledPanel.show(); 
                }
        }
 
        ledPanel.clear();
        ledPanel.show();
        for(int c = 0; c < 7; c++)
        {
                switch(c)
                {
                        case 0: r = l; g = 0; b = 0;  break;
                        case 1: r = 0; g = l; b = 0;  break;
                        case 2: r = 0; g = 0; b = l;  break;
                        case 3: r = l; g = 0; b = l;  break;
                        case 4: r = 0; g = l; b = l;  break;
                        case 5: r = l; g = l; b = 0;  break;
                        case 6: r = l; g = l; b = l;  break;
                }
                for(int ray = 2; ray < 8; ray++)
                {
                        ledPanel.circleFill(7, 7, ray, r, g, b);
                        ledPanel.show(); DelayMs(20);
                        ledPanel.circleFill(7, 7, ray, 0, 0, 0);
                        ledPanel.show(); 
                }
                for(int ray = 7; ray >= 2; ray--)
                {
                        ledPanel.circleFill(7, 7, ray, r, g, b);
                        ledPanel.show(); DelayMs(20);
                        ledPanel.circleFill(7, 7, ray, 0, 0, 0);
                        ledPanel.show(); 
                }
        }
        
        ledPanel.clear();
        ledPanel.show();
        for(int c = 0; c < 7; c++)
        {
                switch(c)
                {
                        case 0: r = l; g = 0; b = 0;  break;
                        case 1: r = 0; g = l; b = 0;  break;
                        case 2: r = 0; g = 0; b = l;  break;
                        case 3: r = l; g = 0; b = l;  break;
                        case 4: r = 0; g = l; b = l;  break;
                        case 5: r = l; g = l; b = 0;  break;
                        case 6: r = l; g = l; b = l;  break;
                }
                for(int i = 4; i < 15; i++)
                {
                        ledPanel.rectRound(1, 1, i, i, 1, r, g, b);
                        ledPanel.show(); DelayMs(20);
                        ledPanel.rectRound(1, 1, i, i, 1, 0, 0, 0);
                        ledPanel.show();
                }
                for(int i = 14; i >= 4; i--)
                {
                        ledPanel.rectRound(1, 1, i, i, 1, r, g, b);
                        ledPanel.show(); DelayMs(20);
                        ledPanel.rectRound(1, 1, i, i, 1, 0, 0, 0);
                        ledPanel.show();
                }
        }
        //
        for(int c = 0; c < 7; c++)
        {
                switch(c)
                {
                        case 0: r = l; g = 0; b = 0;  break;
                        case 1: r = 0; g = l; b = 0;  break;
                        case 2: r = 0; g = 0; b = l;  break;
                        case 3: r = l; g = 0; b = l;  break;
                        case 4: r = 0; g = l; b = l;  break;
                        case 5: r = l; g = l; b = 0;  break;
                        case 6: r = l; g = l; b = l;  break;
                }
                for(int i = 4; i < 15; i++)
                {
                        ledPanel.rectRoundFill(1, 1, i, i, 1, r, g, b);
                        ledPanel.show(); DelayMs(20);
                        ledPanel.rectRoundFill(1, 1, i, i, 1, 0, 0, 0);
                        ledPanel.show();
                }
                for(int i = 14; i >= 4; i--)
                {
                        ledPanel.rectRoundFill(1, 1, i, i, 1, r, g, b);
                        ledPanel.show(); DelayMs(20);
                        ledPanel.rectRoundFill(1, 1, i, i, 1, 0, 0, 0);
                        ledPanel.show();
                }
        }
        ledPanel.clear();
        ledPanel.show();
        for(int c = 0; c < 7; c++)
        {
                switch(c)
                {
                        case 0: r = l; g = 0; b = 0;  break;
                        case 1: r = 0; g = l; b = 0;  break;
                        case 2: r = 0; g = 0; b = l;  break;
                        case 3: r = l; g = 0; b = l;  break;
                        case 4: r = 0; g = l; b = l;  break;
                        case 5: r = l; g = l; b = 0;  break;
                        case 6: r = l; g = l; b = l;  break;
                }
                ledPanel.triangle(2, 14, 14, 14, 8, 8, r, g, b);
                ledPanel.show(); DelayMs(200);
                ledPanel.triangle(2, 14, 14, 14, 8, 8, 0, 0, 0);
                ledPanel.show();
        }
        char    buf[16];
        for(int c = 0; c < 7; c++)
        {
                switch(c)
                {
                        case 0: r = l; g = 0; b = 0;  break;
                        case 1: r = 0; g = l; b = 0;  break;
                        case 2: r = 0; g = 0; b = l;  break;
                        case 3: r = l; g = 0; b = l;  break;
                        case 4: r = 0; g = l; b = l;  break;
                        case 5: r = l; g = l; b = 0;  break;
                        case 6: r = l; g = l; b = l;  break;
                }
                for(int c = 0; c < 1000; c++)
                {
                        sprintf(buf, "%04d", c);
                        ledPanel.string(buf, 0, 0, r, g, b);
                        ledPanel.show(); //DelayMs(2);
                        ledPanel.string(buf, 0, 0, 0, 0, 0);
                        ledPanel.show(); 
                }
        }
        printf("End\n");
 }
footer
otStudio - Library Reference - (C) 2020-25 Officina Turini, All Rights Reserved
Document built with Doxygen 1.4.0