summaryrefslogtreecommitdiff
path: root/include/tablo_ws2812.h
diff options
context:
space:
mode:
authorvlapa <vlapa@ya.ru>2026-06-13 22:02:56 +0300
committervlapa <vlapa@ya.ru>2026-06-13 22:02:56 +0300
commit9bc645c3d928aba19835bfc2df71fb0dd841fd3a (patch)
tree3cdf9eb58a9733e9de70a25d5edcc685190ce40a /include/tablo_ws2812.h
First
Diffstat (limited to 'include/tablo_ws2812.h')
-rw-r--r--include/tablo_ws2812.h239
1 files changed, 239 insertions, 0 deletions
diff --git a/include/tablo_ws2812.h b/include/tablo_ws2812.h
new file mode 100644
index 0000000..31ce6dc
--- /dev/null
+++ b/include/tablo_ws2812.h
@@ -0,0 +1,239 @@
+/*=========================================================
+ Tablo ws2812
+ = vlapa = v.509
+ 2021.02.01 - 2023.11.14
+=========================================================*/
+#pragma once
+
+#define PIXEL_PIN 3 // D2
+#define PIXEL_COUNT 210
+#define RAZR_PIXEL 42
+#define BRIGHT_DAY 100
+#define BRIGHT_NIGHT 5
+
+#include <Adafruit_NeoPixel.h>
+Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
+
+const uint8_t digit = 5; // кол-во разрядов табло
+
+//********************************************************************
+// плата
+void visibleWork(String visData, uint32_t color, uint8_t bright)
+{ // данные, цвет
+ strip.setBrightness(bright);
+
+ for (uint8_t razr = 0; razr < digit; ++razr)
+ {
+ uint8_t x;
+ if (visData.charAt(razr) == 'A')
+ {
+ x = 10;
+ }
+ else if (visData.charAt(razr) == 'B')
+ {
+ x = 11;
+ }
+ else if (visData.charAt(razr) == 'C')
+ {
+ x = 12;
+ }
+ else if (visData.charAt(razr) == 'D')
+ {
+ x = 13;
+ }
+ else if (visData.charAt(razr) == 'E')
+ {
+ x = 14;
+ }
+ else
+ {
+ x = visData.substring(razr, razr + 1).toInt();
+ }
+
+ switch (x)
+ {
+ case 0:
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ if (i >= 0 && i < 36)
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 1:
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ if (i > 11 && i < 24)
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 2:
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ if ((i > 5 && i < 18) || (i > 23 && i < 42))
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 3:
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ if ((i > 5 && i < 30) || (i > 36 && i < 42))
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 4:
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ if ((i >= 0 && i < 6) || (i > 11 && i < 24) || (i > 35 && i < 42))
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 5:
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ if ((i >= 0 && i < 12) || (i > 17 && i < 30) || (i > 35 && i < 42))
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 6:
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ if ((i >= 0 && i < 12) || (i > 17 && i < 42))
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 7:
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ if (i > 5 && i < 24)
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 8:
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ break;
+ case 9:
+ for (int i = 0; i < RAZR_PIXEL; i++)
+ {
+ if ((i >= 0 && i < 30) || (i > 35 && i < 42))
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 10: // градус ( A )
+ for (int i = 0; i < RAZR_PIXEL; i++)
+ {
+ if ((i >= 0 && i < 18) || (i > 35 && i < 42))
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 11: // минус ( B )
+ for (int i = 0; i < RAZR_PIXEL; i++)
+ {
+ if ((i > 35) && (i < 42))
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 12: // двоеточие ( C )
+ for (int i = 0; i < RAZR_PIXEL; i++)
+ {
+ if ((i == 36) || (i == 37) || (i == 40) || (i == 41))
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ case 13: // null (пусто) ( D )
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ break;
+ case 14: // точка ( E )
+ for (int i = 0; i < RAZR_PIXEL; ++i)
+ {
+ if ((i == 26) || (i == 27))
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, color);
+ }
+ else
+ {
+ strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0));
+ }
+ }
+ break;
+ }
+ }
+ strip.show();
+} \ No newline at end of file