Suzu Tomo / Mbed OS 2020_ChristmasLED

Dependencies:   WS2812B_SPI

Revision:
1:1de917dde4ed
Parent:
0:943dfa56009a
diff -r 943dfa56009a -r 1de917dde4ed LED.h
--- a/LED.h	Sat Nov 07 13:40:03 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,242 +0,0 @@
-#include "WS2812B.h"
-
-#define BUF 60
-#define BUF2 42
-
-double beatTime = 60/60;
-bool LR = false;
-
-
-int buf[3] = {BUF,BUF,BUF2};
-WS2812B tape[2] = {
-    WS2812B(PB_0,BUF),
-    WS2812B(PC_1,BUF)/*,
-    WS2812B(PC_0,BUF2)*/
-};
-
-Timer ledT;
-
-volatile double calcBar = 0;
-
-void TempoWait(double beat,bool useF8 = 0)
-{
-    calcBar += beat;
-    if (useF8) while (barClock < calcBar * 24);
-    else while (ledT.read() < calcBar * beatTime);
-}
-
-void FlowLED(double beat,int type,uint32_t color,bool useF8 = 0)
-{
-    for (int t = 0; t < 2; t++) tape[t].Clear(buf[t]);
-    switch (type) {
-        case 0 : // 端から端
-            for (int i = 0; i<=BUF; i++) {
-                for (int t = 0; t < 2; t++) tape[t].Write(i-1,0x0);
-                for (int j = 0; j < 3; j++) for (int t = 0; t < 2; t++) tape[t].Write(i + j,color);
-                
-                if (useF8) while (barClock < calcBar * 24 + i * beat * 24 / BUF);
-                else while (ledT.read() < calcBar * beatTime + i * beat * beatTime / BUF);
-            }
-            break;
-
-        case 1 : // 端から端
-            for (int i = 0; i<=BUF; i++) {
-                for (int t = 0; t < 2; t++) tape[t].Write(BUF - i + 1,0x0);
-                for (int j = 0; j > -3; j--) for (int t = 0; t < 2; t++) tape[t].Write(BUF - i + j,color);
-                
-                if (useF8) while (barClock < calcBar * 24 + i * beat * 24 / BUF);
-                else while (ledT.read() < calcBar * beatTime + i * beat * beatTime / BUF);
-            }
-            break;
-
-        case 2 : // 外から中央に
-            for (int i = 0; i<=(BUF / 2); i++) {
-                for (int t = 0; t < 2; t++) tape[t].Write(i - 1,0x0);
-                for (int t = 0; t < 2; t++) tape[t].Write(BUF - i + 1,0x0);
-                for (int j = 0; j < 3; j++) {
-                    for (int t = 0; t < 2; t++) tape[t].Write(i + j,color);
-                    for (int t = 0; t < 2; t++) tape[t].Write(BUF - i - j,color);
-                }
-                
-                if (useF8) while (barClock < calcBar * 24 + i * beat * 24 * 2 / BUF);
-                else while (ledT.read() < calcBar * beatTime + i * beat * beatTime * 2 / BUF);
-            }
-            break;
-
-        case 3 : // 中央から外に
-            for (int i = 0; i<=(BUF / 2); i++) {
-                for (int t = 0; t < 2; t++) tape[t].Write(BUF / 2 - i + 1,0x0);
-                for (int t = 0; t < 2; t++) tape[t].Write(BUF / 2 + i - 1,0x0);
-                for (int j = 0; j < 3; j++) {
-                    for (int t = 0; t < 2; t++) tape[t].Write(BUF / 2 - i - j,color);
-                    for (int t = 0; t < 2; t++) tape[t].Write(BUF / 2 + i + j,color);
-                }
-                
-                if (useF8) while (barClock < calcBar * 24 + i * beat * 24 * 2 / BUF);
-                else while (ledT.read() < calcBar * beatTime + i * beat * beatTime * 2 / BUF);
-            }
-            break;
-
-        case 4 : // まとまって流れる
-            for (int i = 0; i<=BUF + 40; i++) {
-                //printf("%d\r\n",i);
-                for (int j = 0; j<20; j++) {
-                    for (int t = 0; t < 2; t++) tape[t].Write(i - 20 + j,tape[t].BrightAdjust(color,(double)j * 1/20/*sin(j * (PI / 10))*/));
-                }
-                for (int j = 0; j < 20; j++) for (int t = 0; t < 2; t++) tape[t].Write(i - 20 + j,0);
-                if (useF8) while (barClock < calcBar * 24 + i * beat * 24 / (BUF + 40));
-                else while (barClock < calcBar * 24 + i * beat * 24 / (BUF + 40));
-                
-            }
-            break;
-    }
-    for (int t = 0; t < 2; t++) tape[t].Clear(BUF);
-    calcBar += beat;
-
-}
-
-void FlashLED(double beat,int type,uint32_t color,bool useF8 = 0)
-{
-    calcBar += beat;
-    for (int t = 0; t < 2; t++) tape[t].Clear(BUF);
-    switch (type) {
-        case 0 :
-            int rw = (rand() % 5) + 2;
-            int rb = (rand() % 5) + 2;
-            for (int i = 0; i<=BUF;) {
-                for (int j = 0; j < rw; j++) {
-                    if (rw % 2) for (int t = 0; t < 2; t++) tape[t].Write(i + j,color);
-                    else for (int t = 0; t < 2; t++) tape[t].Write(i + j,0x0);
-                }
-                for (int j = 0; j < rb; j++) {
-                    if (rw % 2)for (int t = 0; t < 2; t++) tape[t].Write(i + rw + j,0x0);
-                    else for (int t = 0; t < 2; t++) tape[t].Write(i + rw + j,color);
-                }
-                i += rw + rb;
-            }
-            break;
-        case 1 :
-            int r = (rand() % (BUF / 2 - BUF / 4));
-            for (int i = 0; i<=BUF; i++) {
-                if (LR) {
-                    if ((i - r > 0) && (i - r < (BUF / 4)))for (int t = 0; t < 2; t++) tape[t].Write(i,color);
-                    else for (int t = 0; t < 2; t++) tape[t].Write(i,0x0);
-                } else {
-                    if ((i - (r + BUF / 2) > 0) && (i - (r + BUF / 2) < (BUF / 4))) for (int t = 0; t < 2; t++) tape[t].Write(i,color);
-                    else for (int t = 0; t < 2; t++) tape[t].Write(i,0x0);
-                }
-            }
-            LR = !LR;
-            break;
-    }
-
-    if (useF8) while (barClock < calcBar * 24);
-    else while (ledT.read() < calcBar * beatTime);
-    //ws.Clear(BUF);
-
-}
-
-void LightLED(double beat,uint32_t color,bool useF8 = 0)
-{
-    calcBar += beat;
-    for (int t = 0; t < 2; t++) tape[t].Write(color);
-    if (useF8) while (barClock < calcBar * 24);
-    else while (ledT.read() < calcBar * beatTime);
-}
-
-void SendLED(double beat,bool useF8 = 0)
-{
-    calcBar += beat;
-    if (useF8) while (calcBar < calcBar * 24);
-    else while (ledT.read() < calcBar * beatTime);
-}
-
-void FadeLED(double beat,int mode,uint32_t color,bool useF8 = 0)
-{
-    for (int i = 1; i <= 48; i++) {
-        if (mode == 0) for (int t = 0; t < 2; t++) tape[t].Write(color,i / 48.0);
-        if (mode == 1) for (int t = 0; t < 2; t++) tape[t].Write(color,(1.0 - i / 48.0));
-        if (useF8) while (barClock < calcBar * 24 + i * beat * 24 / 48);
-        else while (ledT.read() < calcBar * beatTime + i * beat * beatTime / 48);
-    }
-    calcBar += beat;
-}
-
-void SendingLED()
-{
-    while (1) {
-        for (int t = 0; t < 2; t++) tape[t].Send();
-        wait_us((1000 / 60)*1e3);
-    }
-}
-
-
-void FlowLED2(double beat,int type,uint32_t color,int num,bool useF8 = 0)
-{
-    tape[num].Clear(buf[num]);
-    switch (type) {
-        case 0 : // 端から端
-            for (int i = 0; i<=BUF; i++) {
-                tape[num].Write(i-1,0x0);
-                for (int j = 0; j < 3; j++) tape[num].Write(i + j,color);
-                
-                if (useF8) while (barClock < calcBar * 24 + i * beat * 24 / BUF);
-                else while (ledT.read() < calcBar * beatTime + i * beat * beatTime / BUF);
-            }
-            break;
-
-        case 1 : // 端から端
-            for (int i = 0; i<=BUF; i++) {
-                tape[num].Write(BUF - i + 1,0x0);
-                for (int j = 0; j > -3; j--) tape[num].Write(BUF - i + j,color);
-                
-                if (useF8) while (barClock < calcBar * 24 + i * beat * 24 / BUF);
-                else while (ledT.read() < calcBar * beatTime + i * beat * beatTime / BUF);
-            }
-            break;
-
-        case 2 : // 外から中央に
-            for (int i = 0; i<=(BUF / 2); i++) {
-                tape[num].Write(i - 1,0x0);
-                tape[num].Write(BUF - i + 1,0x0);
-                for (int j = 0; j < 3; j++) {
-                    tape[num].Write(i + j,color);
-                    tape[num].Write(BUF - i - j,color);
-                }
-                
-                if (useF8) while (barClock < calcBar * 24 + i * beat * 24 * 2 / BUF);
-                else while (ledT.read() < calcBar * beatTime + i * beat * beatTime * 2 / BUF);
-            }
-            break;
-
-        case 3 : // 中央から外に
-            for (int i = 0; i<=(BUF / 2); i++) {
-                tape[num].Write(BUF / 2 - i + 1,0x0);
-                tape[num].Write(BUF / 2 + i - 1,0x0);
-                for (int j = 0; j < 3; j++) {
-                    tape[num].Write(BUF / 2 - i - j,color);
-                    tape[num].Write(BUF / 2 + i + j,color);
-                }
-                
-                if (useF8) while (barClock < calcBar * 24 + i * beat * 24 * 2 / BUF);
-                else while (ledT.read() < calcBar * beatTime + i * beat * beatTime * 2 / BUF);
-            }
-            break;
-
-        case 4 : // まとまって流れる
-            for (int i = 0; i<=BUF + 40; i++) {
-                //printf("%d\r\n",i);
-                for (int j = 0; j<20; j++) {
-                    tape[num].Write(i - 20 + j,tape[num].BrightAdjust(color,(double)j * 1/20));
-                }
-                for (int j = 0; j < 20; j++) tape[num].Write(i - 20 + j,0);
-                if (useF8) while (barClock < calcBar * 24 + i * beat * 24 / (BUF + 40));
-                else while (barClock < calcBar * 24 + i * beat * 24 / (BUF + 40));
-                
-            }
-            break;
-    }
-    tape[num].Clear(BUF);
-    calcBar += beat;
-
-}
\ No newline at end of file