Loading [MathJax]/extensions/tex2jax.js
ProtoTracer  1.0
Real-time 3D rendering and animation engine
All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros Pages
BetaProtoControllerOctoWS2811.h
Go to the documentation of this file.
1#include <Arduino.h>
2#include <OctoWS2811.h>
3
4#include "Controller.h"
5#include "Render/Camera.h"
6#include "Flash/PixelGroups/KaiborgV1Pixels.h"
7#include "Flash/PixelGroups/ProtoDRMini.h"
8#include "Flash/PixelGroups/HertzMini.h"
9
10const int ledsPerStrip = 346;
11DMAMEM int displayMemory[346 * 6];
12int drawingMemory[346 * 6];
13const int config = WS2811_GRB | WS2811_800kHz;
14
16
18private:
20
21 Transform camRghtFrntTransform = Transform(Vector3D(0.0f, 27.0f, 0.0f), Vector3D(1.0f, 0, -500.0f+14.0f), Vector3D(1, 1, 1));
22 Transform camLeftFrntTransform = Transform(Vector3D(0.0f, -27.0f, 0.0f), Vector3D(1.0f, 0, -500.0f-14.0f), Vector3D(1, 1, 1));
23 Transform camRghtRearTransform = Transform(Vector3D(-5.631f, -1.508f, 164.057f), Vector3D(460.0f, 290.0f, -500.0f+111.0f), Vector3D(1, 1, 1));
24 Transform camLeftRearTransform = Transform(Vector3D(5.631f, 1.508f, 164.057f), Vector3D(460.0f, 290.0f, -500.0f-111.0f), Vector3D(1, 1, 1));
25 Transform camRghtChinTransform = Transform(Vector3D(52.014f, 9.825f, 28.423f), Vector3D(19.0f + 30.0f, 30.0f, -500.0f-19.0f), Vector3D(1, 1, 1));
26 Transform camLeftChinTransform = Transform(Vector3D(-163.947f, -52.151f, 130.883f), Vector3D(145.0f + 30.0f, 30.0f, -500.0f+81.0f), Vector3D(1, 1, 1));
27 Transform camRghtMiniTransform = Transform(Vector3D(-5.631f, -1.508f, 164.057f), Vector3D(420.0f, 230.0f, -500.0f+111.0f), Vector3D(1, 1, 1));
28 Transform camLeftMiniTransform = Transform(Vector3D(5.631f, 1.508f, 164.057f), Vector3D(420.0f, 230.0f, -500.0f-111.0f), Vector3D(1, 1, 1));
29
38
47
50
51public:
53 this->maxBrightness = maxBrightness;
54 }
55
56 void Initialize() override{
57 leds.begin();
58 leds.show();
59 }
60
61 void Display() override {
62 for (int i = 0; i < 571; i++){
63 camLeftFrntPixels.GetPixel(i)->Color = camLeftFrntPixels.GetPixel(i)->Color.Scale(brightness);
64 camRghtFrntPixels.GetPixel(i)->Color = camRghtFrntPixels.GetPixel(i)->Color.Scale(brightness);
65
66 camLeftRearPixels.GetPixel(i)->Color = camLeftRearPixels.GetPixel(i)->Color.Scale(brightness);
67 camRghtRearPixels.GetPixel(i)->Color = camRghtRearPixels.GetPixel(i)->Color.Scale(brightness);
68
69 if(i < 89){
70 camRghtChinPixels.GetPixel(i)->Color = camRghtChinPixels.GetPixel(i)->Color.Scale(brightness * 2);
71 camLeftChinPixels.GetPixel(i)->Color = camLeftChinPixels.GetPixel(i)->Color.Scale(brightness * 2);
72 }
73
74 if(i < 4){
75 camRghtMiniPixels.GetPixel(i)->Color = camRghtMiniPixels.GetPixel(i)->Color.Scale(brightness * 4);
76 camLeftMiniPixels.GetPixel(i)->Color = camLeftMiniPixels.GetPixel(i)->Color.Scale(brightness * 4);
77 }
78 }
79
80 for (int i = 0; i < 571; i++) {
81 if (i < 346){
82 //Rear Panels
83 leds.setPixel(i + 346 * 1, camLeftRearPixels.GetPixel(i + 225)->Color.R, camLeftRearPixels.GetPixel(i + 225)->Color.G, camLeftRearPixels.GetPixel(i + 225)->Color.B);//Pin 7
84 leds.setPixel(i + 346 * 3, camRghtRearPixels.GetPixel(i)->Color.R, camRghtRearPixels.GetPixel(i)->Color.G, camRghtRearPixels.GetPixel(i)->Color.B);//Pin 8
85
86 //Front Panels
87 leds.setPixel(i + 346 * 5, camLeftFrntPixels.GetPixel(i + 225)->Color.R, camLeftFrntPixels.GetPixel(i + 225)->Color.G, camLeftFrntPixels.GetPixel(i + 225)->Color.B);//Pin 7
88 leds.setPixel(i + 346 * 4, camRghtFrntPixels.GetPixel(i)->Color.R, camRghtFrntPixels.GetPixel(i)->Color.G, camRghtFrntPixels.GetPixel(i)->Color.B);//Pin 8
89 }
90 else{
91 //Rear Panels
92 leds.setPixel(i + 346 * 0 - 346, camLeftRearPixels.GetPixel(i - 346)->Color.R, camLeftRearPixels.GetPixel(i - 346)->Color.G, camLeftRearPixels.GetPixel(i - 346)->Color.B);//Pin 8
93 leds.setPixel(i + 346 * 2 - 346, camRghtRearPixels.GetPixel(i)->Color.R, camRghtRearPixels.GetPixel(i)->Color.G, camRghtRearPixels.GetPixel(i)->Color.B);//Pin 8
94
95 //Front Panels
96 leds.setPixel(i + 346 * 7 - 346, camLeftFrntPixels.GetPixel(i - 346)->Color.R, camLeftFrntPixels.GetPixel(i - 346)->Color.G, camLeftFrntPixels.GetPixel(i - 346)->Color.B);//Pin 8
97 leds.setPixel(i + 346 * 6 - 346, camRghtFrntPixels.GetPixel(i)->Color.R, camRghtFrntPixels.GetPixel(i)->Color.G, camRghtFrntPixels.GetPixel(i)->Color.B);//Pin 8
98 }
99 }
100
101 for(int i = 0; i < 89; i++){
102 //Front Panels
103 leds.setPixel(i + 346 * 7 + 225, camLeftChinPixels.GetPixel(i)->Color.R, camLeftChinPixels.GetPixel(i)->Color.G, camLeftChinPixels.GetPixel(i)->Color.B);//Pin 8
104 leds.setPixel(i + 346 * 6 + 225, camRghtChinPixels.GetPixel(i)->Color.R, camRghtChinPixels.GetPixel(i)->Color.G, camRghtChinPixels.GetPixel(i)->Color.B);//Pin 8
105 }
106
107 for(int i = 0; i < 4; i++){
108 //Front Panels
109 leds.setPixel(i + 346 * 0 + 225, camLeftMiniPixels.GetPixel(i)->Color.R, camLeftMiniPixels.GetPixel(i)->Color.G, camLeftMiniPixels.GetPixel(i)->Color.B);//Pin 8
110 leds.setPixel(i + 346 * 2 + 225, camRghtMiniPixels.GetPixel(i)->Color.R, camRghtMiniPixels.GetPixel(i)->Color.G, camRghtMiniPixels.GetPixel(i)->Color.B);//Pin 8
111 }
112
113 leds.show();
114 }
115};
DMAMEM int displayMemory[346 *6]
const int config
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config)
int drawingMemory[346 *6]
const int ledsPerStrip
Declares the Controller base class for managing lighting controllers.
DMAMEM Vector2D HertzMiniCamera[4]
Definition HertzMini.h:3
DMAMEM Vector2D ProtoDRMini[89]
Definition ProtoDRMini.h:3
Manages camera orientation and axis alignment.
@ YUp
Up along the positive Y-axis.
@ ZForward
Forward along the positive Z-axis.
Manages camera behavior and pixel groups.
Definition Camera.h:27
Base class for managing brightness and display operations of lighting controllers.
Definition Controller.h:25
uint8_t brightness
Current brightness level.
Definition Controller.h:32
@ ZEROTOMAX
Traverse from minimum to maximum indices.
Definition IPixelGroup.h:32
@ MAXTOZERO
Traverse from maximum to minimum indices.
Definition IPixelGroup.h:33
Manages a collection of pixels with positions, colors, and spatial relationships.
Definition PixelGroup.h:27
ProtoV2Controller(uint8_t maxBrightness)
void Initialize() override
Initializes the controller.
void Display() override
Updates and displays content on the lighting system.
Represents a 3D transformation including position, rotation, and scale.
Definition Transform.h:22
Represents a 3D vector (X, Y, Z) and provides methods for vector arithmetic.
Definition Vector3D.h:26