ProtoTracer  1.0
Real-time 3D rendering and animation engine
Loading...
Searching...
No Matches
HUB75ControllerSplit.cpp
Go to the documentation of this file.
2
3//Macro calls from SmartMatrix library included in SmartMatrixHUB75
6
9
10HUB75ControllerSplit::HUB75ControllerSplit(CameraManager* cameras, uint8_t maxBrightness, uint8_t maxAccentBrightness) : Controller(cameras, maxBrightness, maxAccentBrightness){}
11
13 matrix.addLayer(&backgroundLayer);
14 matrix.begin();
15 matrix.setRefreshRate(240);
16
17 backgroundLayer.swapBuffers();//for ESP32 - first is ignored
18
19 //APA102
20 apamatrix.addLayer(&apaBackgroundLayer);
21 apamatrix.begin();
22 apamatrix.setRefreshRate(240);
23}
24
27
28 matrix.setBrightness(brightness);
29 apamatrix.setBrightness(accentBrightness / 2);
30
31 IPixelGroup* camPixelsRight = cameras->GetCameras()[0]->GetPixelGroup();
32 IPixelGroup* camPixelsLeft = cameras->GetCameras()[1]->GetPixelGroup();
33 IPixelGroup* camSidePixels = cameras->GetCameras()[2]->GetPixelGroup();
34
35 for (uint16_t y = 0; y < 32; y++) {
36 for (uint16_t x = 0; x < 64; x++){
37 uint16_t pixelNum = y * 64 + x;
38
39 rgb24 rgbColorLeft = rgb24((uint16_t)camPixelsLeft->GetColor(pixelNum)->R, (uint16_t)camPixelsLeft->GetColor(pixelNum)->G, (uint16_t)camPixelsLeft->GetColor(pixelNum)->B);
40 rgb24 rgbColorRight = rgb24((uint16_t)camPixelsRight->GetColor(pixelNum)->R, (uint16_t)camPixelsRight->GetColor(pixelNum)->G, (uint16_t)camPixelsRight->GetColor(pixelNum)->B);
41
42 backgroundLayer.drawPixel(x, (31 - y), rgbColorLeft);
43 backgroundLayer.drawPixel(63 - x, (31 - y) + 32, rgbColorRight);
44 }
45 }
46
47 backgroundLayer.swapBuffers(false);
48
49 for (uint16_t x = 0; x < kApaMatrixWidth; x++){
50 rgb24 rgbColor = rgb24((uint16_t)camSidePixels->GetColor(x)->R, (uint16_t)camSidePixels->GetColor(x)->G, (uint16_t)camSidePixels->GetColor(x)->B);
51
52 apaBackgroundLayer.drawPixel(x, 0, rgbColor);
53 }
54
55 apaBackgroundLayer.swapBuffers(false);
56}
57
58void HUB75ControllerSplit::SetBrightness(uint8_t maxBrightness){
59 this->maxBrightness = maxBrightness * 25 + 5;
60
61 if(isOn){//past soft start
62 this->brightness = maxBrightness * 25 + 5;
63 }
64}
65
66void HUB75ControllerSplit::SetAccentBrightness(uint8_t maxAccentBrightness){
67 this->maxAccentBrightness = maxAccentBrightness * 12 + 5;
68
69 if(isOn){//past soft start
70 this->accentBrightness = maxAccentBrightness * 12 + 5;
71 }
72}
SMARTMATRIX_ALLOCATE_BACKGROUND_LAYER(backgroundLayer, kMatrixWidth, kMatrixHeight, COLOR_DEPTH, kBackgroundLayerOptions)
SMARTMATRIX_ALLOCATE_BUFFERS(matrix, kMatrixWidth, kMatrixHeight, kRefreshDepth, kDmaBufferRows, kPanelType, kMatrixOptions)
SMARTMATRIX_APA_ALLOCATE_BUFFERS(apamatrix, kApaMatrixWidth, kApaMatrixHeight, kApaRefreshDepth, kApaDmaBufferRows, kApaPanelType, kApaMatrixOptions)
Declares the HUB75ControllerSplit class for managing HUB75 LED matrices and secondary LED displays.
const uint8_t kApaBackgroundLayerOptions
Background layer options for APA matrices.
const uint16_t kApaMatrixWidth
Width of the APA matrix or strip.
#define COLOR_DEPTH
Specifies the color depth used for storing pixels in the layers.
const uint32_t kApaMatrixOptions
Options for APA matrices, including color order.
const uint8_t kApaDmaBufferRows
Not currently used for APA matrices.
const uint8_t kApaPanelType
Not currently used for APA matrices.
const uint16_t kApaMatrixHeight
Height of the APA matrix. Set to 1 for strips.
const uint8_t kApaRefreshDepth
Not currently used for APA matrices.
const uint8_t kDmaBufferRows
Number of DMA buffer rows for HUB75 matrices.
const uint8_t kPanelType
Specifies the panel type for HUB75 matrices.
const uint8_t kBackgroundLayerOptions
Background layer options for HUB75 matrices.
const uint8_t kRefreshDepth
Specifies the tradeoff between color quality and refresh rate for HUB75 matrices.
const uint16_t kMatrixWidth
Width of the HUB75 matrix.
const uint32_t kMatrixOptions
Options for HUB75 matrices.
const uint16_t kMatrixHeight
Height of the HUB75 matrix.
virtual IPixelGroup * GetPixelGroup()=0
Retrieves the associated pixel group.
Manages multiple CameraBase objects.
CameraBase ** GetCameras()
Retrieves the array of CameraBase objects.
Base class for managing brightness and display operations of lighting controllers.
Definition Controller.h:25
uint8_t maxAccentBrightness
Maximum allowed accent brightness level.
Definition Controller.h:35
uint8_t accentBrightness
Current accent brightness level.
Definition Controller.h:33
uint8_t brightness
Current brightness level.
Definition Controller.h:32
uint8_t maxBrightness
Maximum allowed brightness level.
Definition Controller.h:34
CameraManager * cameras
Pointer to the CameraManager for managing camera data.
Definition Controller.h:31
void UpdateBrightness()
Updates the brightness based on internal logic.
Definition Controller.cpp:9
bool isOn
Indicates if the controller is active.
Definition Controller.h:36
void SetBrightness(uint8_t maxBrightness)
Sets the maximum brightness of the main HUB75 LED matrix.
void Initialize() override
Initializes the HUB75ControllerSplit and sets up the displays.
void Display() override
Updates and displays the content on the main and secondary displays.
HUB75ControllerSplit(CameraManager *cameras, uint8_t maxBrightness, uint8_t maxAccentBrightness)
Constructs a HUB75ControllerSplit with specified parameters.
void SetAccentBrightness(uint8_t maxAccentBrightness)
Sets the maximum brightness of the secondary LED strip or display.
Interface for managing and interacting with a collection of pixels.
Definition IPixelGroup.h:25
virtual RGBColor * GetColor(uint16_t count)=0
Retrieves the color of a specific pixel.
uint8_t B
Blue component of the color (0-255).
Definition RGBColor.h:27
uint8_t G
Green component of the color (0-255).
Definition RGBColor.h:26
uint8_t R
Red component of the color (0-255).
Definition RGBColor.h:25