// Definicja segmentów #define DIGIT_EMPTY 10 #define DIGIT_MINUS 11 const uint16_t SEGMENT_PATTERNS[12] PROGMEM = { [0] = 0b11111100111111, [1] = 0b11000000110000, [2] = 0b00111111111100, [3] = 0b11110011111100, [4] = 0b11000011110011, [5] = 0b11110011001111, [6] = 0b11111111001111, [7] = 0b11000000111100, [8] = 0b11111111111111, [9] = 0b11110011111111, [DIGIT_EMPTY] = 0b00000000000000, [DIGIT_MINUS] = 0b00000011000000, }; // Ustawienie segmentu LED void setSegment(uint8_t startLed, uint8_t value, uint8_t r, uint8_t g, uint8_t b) { if (value > 11) return; // Ochrona przed złym indeksem // Wyłącz segment for (uint8_t i = 0; i < 14; i++) { pixels.setPixelColor(startLed + i, 0, 0, 0); } // Włącz segmenty odpowiednie dla cyfry uint8_t i = 0; uint16_t leds = pgm_read_word(&SEGMENT_PATTERNS[value]); for(i=0; leds != 0; i++, leds >>= 1) { if(leds & 1) pixels.setPixelColor(startLed + i, r, g, b); yield(); } }