fablab-neoSevenSegment/SevenSegmentNeoPixel.h
2025-07-13 15:44:13 +03:00

38 lines
1.1 KiB
C++

#ifndef SEVENSEGMENTNEOPIXEL_H
#define SEVENSEGMENTNEOPIXEL_H
#include <Adafruit_NeoPixel.h>
class SevenSegmentNeoPixel {
public:
// Constructor with optional segment order
SevenSegmentNeoPixel(uint8_t digits, uint8_t pixelsPerSegment, uint8_t pin,
const uint8_t* segmentOrder = nullptr,
neoPixelType type = NEO_GRB + NEO_KHZ800);
void begin();
void clear();
void show();
void setBrightness(uint8_t brightness);
void setDigit(uint8_t digitIndex, uint8_t value, uint32_t color);
void setAll(uint8_t value, uint32_t color);
void setSegments(uint8_t digitIndex, const uint8_t segments[7], uint32_t color);
Adafruit_NeoPixel& getStrip();
static const uint8_t* getSegmentPattern(uint8_t digit);
private:
uint8_t _digits;
uint8_t _pixelsPerSegment;
uint8_t _segmentsPerDigit = 7;
uint16_t _pixelsPerDigit;
uint16_t _numPixels;
Adafruit_NeoPixel _strip;
uint8_t _segmentOrder[7]; // <-- Add this line
static const uint8_t _segmentPatterns[10][7];
uint16_t getPixelOffset(uint8_t digitIndex, uint8_t segmentIndex) const;
};
#endif