/*========================================================= Tablo ws2812_22ledX5 2026.02.21 - A - градус В - минус С - двоеточие D - пусто E - точка F - p G - h =========================================================*/ #pragma once #define PIXEL_PIN D2 #define RAZR_PIXEL 42 #define PIXEL_COUNT 210 #define DIGIT 5 #include Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); //******************************************************** // "Перевод" данных в пиксели: void visibleWork(String visData, uint32_t color, uint8_t bright) { // Serial.println(visData); strip.setBrightness(bright); for (uint8_t razr = 0; razr < DIGIT; ++razr) { uint8_t temp; if (visData.charAt(razr) == 'A') { temp = 10; } else if (visData.charAt(razr) == 'B') { temp = 11; } else if (visData.charAt(razr) == 'C') { temp = 12; } else if (visData.charAt(razr) == 'D') { temp = 13; } else if (visData.charAt(razr) == 'E') { temp = 14; } else { temp = visData.substring(razr, razr + 1).toInt(); } switch (temp) { case 0: for (uint8_t i = 0; i < RAZR_PIXEL; ++i) { if (i >= 0 && i < 20) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 1: for (uint8_t i = 0; i < RAZR_PIXEL; ++i) { if (i > 4 && i < 13) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 2: for (uint8_t i = 0; i < RAZR_PIXEL; ++i) { if ((i > 1 && i < 9) || (i > 11 && i < 22)) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 3: for (uint8_t i = 0; i < RAZR_PIXEL; ++i) { if ((i > 1 && i < 16) || (i == 20 || i == 21)) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 4: for (uint8_t i = 0; i < RAZR_PIXEL; ++i) { if ((i >= 0 && i < 3) || (i > 4 && i < 13) || (i > 18 && i < 22)) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 5: for (uint8_t i = 0; i < RAZR_PIXEL; ++i) { if ((i >= 0 && i < 6) || (i > 7 && i < 16) || (i > 18 && i < 22)) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 6: for (uint8_t i = 0; i < RAZR_PIXEL; ++i) { if ((i >= 0 && i < 6) || (i > 7 && i < 22)) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 7: for (uint8_t i = 0; i < RAZR_PIXEL; ++i) { if (i > 1 && i < 13) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 8: for (uint8_t i = 0; i < RAZR_PIXEL; ++i) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } break; case 9: for (uint8_t i = 0; i < RAZR_PIXEL; i++) { if ((i >= 0 && i < 16) || (i > 18 && i < 22)) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 10: // градус ( A ) for (uint8_t i = 0; i < RAZR_PIXEL; i++) { if (i == 0 || i == 1 || i == 3 || i == 4 || i == 6 || i == 7 || i == 20 || i == 21) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 11: // минус ( B ) for (uint8_t i = 0; i < RAZR_PIXEL; i++) { if (i == 8 || (i > 18 && i < 22)) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; case 12: // двоеточие ( C ) короткое тире for (uint8_t i = 0; i < RAZR_PIXEL; i++) { if (i == 20 || i == 21) { 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 (uint8_t i = 0; i < RAZR_PIXEL; ++i) { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } break; case 14: // точка ( E ) for (uint8_t i = 0; i < RAZR_PIXEL; ++i) { if (i == 13 || i == 14) { strip.setPixelColor(i + razr * RAZR_PIXEL, color); } else { strip.setPixelColor(i + razr * RAZR_PIXEL, strip.Color(0, 0, 0)); } } break; } } }