Lamp assembly and method thereof
By using multiple connected light panels and controllers in the lamp assembly to calculate topology and vertex information tables, the shortcomings of existing lighting products in the implementation of complex light effects and animated light effects rendering are solved, and flexible light panel assembly and efficient animation light effects rendering are achieved.
Patent Information
- Application Number
- CN202280099773.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2022-09-21
- Publication Date
- 2025-04-04
AI Technical Summary
When existing lighting products achieve complex light effects, the layout detection methods are insufficient, and the animation light effects require a large amount of light data, resulting in high costs and strict performance requirements.
By using multiple connected light panels and controllers in the lamp component, the calculation and transmission of topology information tables and vertex information tables are realized. Each light panel calculates light effect data based on the vertex information tables and timing clock signals and renders light effects.
It realizes flexible gloss panel assembly and rendering of complex animation light effects, reduces dependence on central controllers and high-speed hardware, and improves system flexibility and efficiency.
Smart Images

Figure CN119769179A_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to a lamp assembly and a method for a lamp assembly. Background Art
[0002] Nowadays, lighting products composed of multiple configurable lighting units are becoming more and more popular. Multiple configurable lighting units can be removably connected to each other. Users can freely assemble multiple lighting units according to their own preferences to form lighting products with different geometric shapes. This requires detecting the layout of all connected lighting units. Some existing layout detection methods only detect the relative adjacent information of lighting units, such as information indicating which two lighting units are joined together and through which edge they are joined. However, for more complex light effects, such as light effects that depend on orientation, such layout detection is not enough. In addition, in existing control methods for lighting products, the light data of each lighting unit is usually coordinated by a central controller. Animated light effects require a large amount of light data from the central controller, which requires a more powerful MCU and a dedicated high-speed bus at a higher cost. Summary of the invention
[0003] According to one aspect of the present disclosure, a method for a lamp assembly is provided. The lamp assembly may include a plurality of light panels connected to each other and a controller connected to a downstream panel among the plurality of light panels. The method may include: discovering the topology of the plurality of light panels in the lamp assembly by the plurality of light panels to derive a topology information table; deriving a vertex information table by the controller based on the topology information table received from the downstream panel and the orientation of the lamp assembly; calculating light effect data of each vertex of each light panel based on the vertex information table and upon receiving a timing clock signal from the controller by each light panel; and rendering light effects by each light panel based on the calculated light effect data of each vertex of each light panel.
[0004] According to another aspect of the present disclosure, a lamp assembly is provided. The lamp assembly may include: a plurality of light panels that may be configured to be connected to each other; and a controller that may be configured to be connected to a downstream panel among the plurality of light panels. The controller may be configured to derive a vertex information table based on a topology information table received from the downstream panel and the orientation of the lamp assembly. The topology information table may indicate the topology of the plurality of light panels in the lamp assembly. Each of the plurality of light panels may include a panel controller. The panel controller may be configured to: receive and store the vertex information table; calculate light effect data for each vertex of the light panel based on the vertex information table; and control one or more light elements located at each vertex of the light panel to render a light effect based on the calculated light effect data of each vertex of the light panel. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Figure 1Examples of light panels having different shapes according to one or more embodiments are illustrated.
[0006] Figure 2 Examples of lamp assemblies having example topologies according to one or more embodiments are illustrated.
[0007] Figure 3 An example of a method for a lamp assembly according to one or more embodiments of the present disclosure is illustrated.
[0008] Figure 4 Schematic diagram illustrating different orientation angles of a light panel having a hexagonal shape.
[0009] Figure 5 Schematic diagram showing different orientation angles of a light panel having a triangular shape.
[0010] Figure 6 Schematic diagram showing different orientation angles of a light panel having a diamond shape.
[0011] Figure 7 Examples of light assemblies having multiple light panels in different orientations are illustrated.
[0012] Figure 8 Examples of unit canvases with different orientations are shown.
[0013] To facilitate understanding, the same reference numerals have been used as much as possible to designate the same elements common to the figures. It is contemplated that an element disclosed in one embodiment may be advantageously used in another embodiment without special indication. The drawings referred to herein should not be understood to be drawn to scale unless otherwise noted. Moreover, for clarity of illustration and explanation, the drawings are generally simplified, and details or components are omitted. The drawings and discussion are used to explain the principles discussed below, wherein the same reference numerals represent the same elements. DETAILED DESCRIPTION
[0014] Examples are provided below for illustration. The description of various examples is presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments.
[0015] In some embodiments, the lamp assembly may include a plurality of light panels and a controller. For example, the light panels may have different shapes, such as a hexagonal shape, a diamond shape, and a triangular shape. When assembling the lamp assembly, the user may connect the light panels one by one according to their preferences. This means that the user may connect any side of any two panels in any orientation. Therefore, the lamp assembly may be formed with a greater variety of geometric shapes in appearance, and may therefore have different logical topologies of the light panels based on different choices of the user. After assembly, the lamp assembly may exhibit a variety of visual light effects.
[0016] The controller can be connected to any of the plurality of light panels and can be physically and electronically configured or designed so that it can share power, data, signals and commands with any panel connected to it. The controller can be integrated with one or more sensors (e.g., G-sensors) to sense its orientation.
[0017] Each light panel can be physically and electronically configured or designed so that the light panels can be interconnected and can share power, data, signals and commands with each other or with a controller. For example, each light panel may include one or more printed circuit boards suitable for transmitting data between different light panels in the lamp assembly. Each light panel may also include one or more panel controllers (e.g., MCU) suitable for storing and processing data. Typically, one or more lighting elements (e.g., LED lamps) are located at the vertices of each panel.
[0018] It should be recognized that at least one panel controller and controller as disclosed herein may include various microprocessors, integrated circuits, memory devices (e.g., FLASH, random access memory (RAM), read-only memory (ROM), electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM) or other suitable variations thereof) and software that cooperate with each other to perform the operations disclosed herein. In addition, at least one controller as disclosed herein utilizes one or more microprocessors to execute a computer program embodied in a non-transitory computer-readable medium that is programmed to perform any number of functions as disclosed. In addition, the controller provided herein includes a housing and various numbers of microprocessors, integrated circuits, and memory devices (e.g., FLASH, random access memory (RAM), read-only memory (ROM), electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM)) positioned within the housing. The disclosed controller also includes hardware-based inputs and outputs for receiving data from other hardware-based devices and transmitting data to other hardware-based devices, respectively.
[0019] Figure 1Examples of light panels having different shapes according to one or more embodiments are illustrated. For example, Figure 1 A light panel 102 having a hexagonal shape, a light panel 104 having a diamond shape, and a light panel 106 having a triangular shape are shown. Typically, each light panel has a unique identifier (ID). The unique ID may be assigned during manufacturing and stored in a non-volatile memory in each panel and / or controller. In addition, for each light panel, an edge identifier may be pre-assigned to each edge, and a vertex ID may be pre-assigned to each vertex. For example, edge IDs AF are assigned to the six edges of the light panel 102 in counterclockwise order, and vertex IDs 0-5 are assigned to the six vertices of the light panel 102 in counterclockwise order. For example, edge IDs AD are assigned to the four edges of the light panel 104 in counterclockwise order, and vertex IDs 0-3 are assigned to the four vertices of the light panel 104 in counterclockwise order. For example, edge IDs AC are assigned to the three edges of the light panel 106 in counterclockwise order, and vertex IDs 0-2 are assigned to the three vertices of the light panel 106 in counterclockwise order. It will be understood that Figure 1 The illustrated assignment of edge IDs and vertex IDs to each panel is merely an example to facilitate easier understanding of the following description. Other assignments of edge IDs and vertex IDs may also be preset (such as in clockwise order, or any predefined order). The preset assignment information of edge IDs and vertex IDs for each panel may be stored in a non-volatile memory of the corresponding panel and / or controller.
[0020] Figure 2 Examples of lamp assemblies having example topologies according to one or more embodiments are illustrated. It can be appreciated that Figure 2 The topologies shown are examples only and are not limiting. Figure 2 As shown, for example, the lamp assembly may include a controller and light panels #1 to #8. The connection between two adjacent panels and the connection between the controller and any one panel may be achieved through a bridge component. The bridge component may include mechanical components and electronic circuits to achieve physical connection and power, data, signal and command transmission.
[0021] exist Figure 2 In the example shown, the controller is connected to panel #4 via a connection bridge. For the controller, panel #4 may be referred to as its downstream panel below. For panel #4, it is connected to panel #2, panel #7, and panel #8, respectively, and these panels may be referred to as sub-panels of panel #4 below, which means that these panels #2, panel #7, and panel #8 are downstream panels of panel #4. And so on.
[0022] Figure 3An example of a method for a lamp assembly according to one or more embodiments of the present disclosure is illustrated. In some embodiments, the lamp assembly may include a plurality of light panels connected to each other and a controller connected to one of the plurality of light panels. One light panel connected to the controller may be referred to as a downstream panel of the controller.
[0023] At S302, multiple light panels can jointly detect or discover the topology of multiple light panels in the lamp assembly to derive a topology information table. In some embodiments, the topology information table can indicate the logical connections in the topology of multiple light panels in the lamp assembly. The topology information may include relative neighbor information for each light panel, such as information indicating which two light panels are connected together and through which edge they are connected. For example, the topology information table can be presented as a panel-sides table, which will be described in detail later. In some examples, a complete topology information table can be transmitted from a downstream panel to a controller.
[0024] At S304, the controller can derive a vertex information table based on the topological information table received from the downstream panel and the orientation of the lamp assembly, wherein the downstream panel is a light panel connected to the controller. In some embodiments, the vertex information table can indicate the relative position information of each vertex of each light panel in the lamp assembly. In some examples, the vertex information table can be presented as an XY coordinate table, which will be described in detail later. In some embodiments, the downstream panel can receive the vertex information table from the controller via a command carrying an orientation index and the vertex information table. Then, the vertex information table can be forwarded to each light panel along the topology.
[0025] In some embodiments, the orientation of the orientation index indicator light assembly is associated with the orientation angle of the controller. In some examples, the orientation angle can be detected by one or more sensors (e.g., G sensor) included in the controller or integrated with the controller. The orientation angle can also indicate the angle in the positive direction between the reference edge of the downstream panel and the horizontal axis, wherein the reference edge of the downstream panel is the edge connected to the controller. In some examples, the detected orientation angle can be rounded to one of 12 levels within a 360-degree circle, i.e., 0 / 30 / 60 / 90 / 120 / 150 / 180 / 210 / 240 / 270 / 300 / 330 degrees. These levels can be divided into two groups. For example, the first group can be 0 / 60 / 120 / 180 / 240 / 300 / 360 degrees, and the second group can be 30 / 90 / 150 / 210 / 270 / 330 degrees. If the detected orientation angle can be rounded to an angle in the first group, the value of the orientation index is 0. If the detected orientation angle can be rounded to an angle in the second set, the value of the orientation index is 1.
[0026] At S306, upon receiving the timing clock signal from the controller, each light panel may calculate light effect data for each vertex of each light panel based on the vertex information table. In some embodiments, each light panel may calculate light effect data for each vertex of each light panel based on the vertex information table and the orientation index.
[0027] At S308, each light panel may display its own light effect based on the calculated light effect data for each vertex of each light panel. In some embodiments, each light panel may display its own light effect based on the calculated light effect data for each vertex of each light panel and an orientation index. In some embodiments, the calculated light effect data is associated with the orientation index.
[0028] Additionally, in some embodiments, the light panel can track any changes in topology by detecting that a new panel is added to the light assembly or an existing light panel is removed from the light assembly. The light panel can notify the controller of any changes in topology so the controller can update the topology information table and the vertex information table.
[0029] The above method according to one or more embodiments can enable users to freely assemble multiple light panels with different shapes. At the same time, the method can determine the position of each light element in such a flexible panel assembly by deriving a vertex information table of the relative position information of each vertex of each light panel in the indicator light assembly. The position of the light element will enable the light panel to render an animated light effect that automatically adapts to the topology and orientation of the light panel assembly, which allows the light panel assembly to express richer and more complex animation themes, rather than just random color change themes. In addition, the method also allows the light panel to create local light effects separately based only on the timing signal from the controller. The local light effect is calculated based on the position information of all light elements in the light panel assembly to jointly create an overall animated light effect. In this way, the data transmission between the controller and the light panel is greatly reduced, so there is no need for an expensive central controller (e.g., MCU) or high-speed hardware. In addition, despite the different shapes of the lighting panels or the different positions of the light panels in the lamp assembly, the method allows each light panel to use the same algorithm to calculate the animated light effect data. The animated light effect can also adapt to the orientation information of the lamp assembly tracked by the controller. More details will be described below.
[0030] Topology Discovery
[0031] This section of "Topology Discovery" will describe in detail how to discover the topology of multiple light panels in a lamp assembly to derive a topology information table (such as a panel-edge table) according to one or more embodiments.
[0032] The topology discovery process may begin when either of the following two conditions are met: the controller is first started after the light assembly is powered on; and a topology change is detected.
[0033] In some examples, the topology discovery process may include a controller sending a topology request command to its downstream panel and waiting for a reply from the downstream panel. The downstream panel traverses all of its edges to discover all of its sub-panels. Each sub-panel continues to traverse its own edges and its downstream sub-panels (if any) until all sub-panels in the light assembly have been traversed. It is understood that a sub-panel refers to any downstream panel connected to an upstream panel. Each downstream sub-panel can store its data about connection information and report the data to its upstream panel. In this way, the downstream panel connected to the controller can eventually complete the data about all connection information in the light assembly and derive a panel-edge table. The panel-edge table indicates the logical connections of all light panels in the current topology. In other words, the panel-edge table may include topology information of all panels logically connected in a tree structure. Then, the downstream panel sends a topology reply command including the panel-edge table to the controller. The controller now has a complete panel-edge table, which includes topology information of all panels logically connected in the light assembly. The topology discovery process is now complete.
[0034] The topology reply command is an upstream command from the panel to the controller and may have the following example data structure.
[0035]
[0036] Len = length of the value field in bytes
[0037] Panel-side table :
[0038]
[0039] Current / Sub-Panel ID Format: The first two digits indicate the type of light panel. For example,
[0040] - Panel IDs in the range of 0x00 00 00 00 – 0x3F FF FF FF mean a hexagonal shape;
[0041] - Panel IDs in the range of 0x40 00 00 00 – 0x7F FF FF FF mean a diamond shape;
[0042] - Panel IDs in the range of 0x80 00 00 00 – 0x8F FF FF FF mean a triangle shape.
[0043] Current / sub-panel edge ID: AF (hexagon); AD (diamond); AC (triangle).
[0044] Firmware version: 0 – 255, This field is reserved for future use.
[0045] The above panel-side table is from Figure 2 The topology discovery is derived from the topology of the lamp assembly shown as an example in FIG. The topology discovery will be described in further detail below.
[0046] After the light assembly is powered on, all light panels are in the "New Panel" state.
[0047] The controller starts to send topology request commands (round = 1) to its downstream panels and waits for the downstream panels to reply.
[0048] When a downstream panel receives a topology request command, it marks itself as "TopologyStarted" and starts forwarding topology request commands (round = 1) to all its edges in sequence. The order can be preset to clockwise, counterclockwise, or other specific order. The order can be set according to different shapes of the panels. In one example, a specific order for a hexagonal shape and a diamond shape can be preset to a stroke order, such as "Z", and a specific order for a triangle shape can be preset to counterclockwise. It will be appreciated that other preset orders may also be used.
[0049] After issuing a topology request command to each edge, the downstream panel acts as the current panel and waits for any of its downstream panels (i.e., its child panels) to reply.
[0050] In some examples, if there is no reply after a period of time such as 5ms, the current panel moves to the next edge. In some examples, if there is a topology reply with Len=0 (command type 0x05), the current panel moves to the next edge.
[0051] In some examples, if there is a topology reply with Len>0 (command type 0x05), the current panel finds a half-empty entry in the panel-edge table, writes its own physical panel ID to the current panel ID, and writes the topology reply incoming edge ID (i.e., the edge from which the topology reply came) to the current edge ID. In this way, branches from the current panel can be completed. The current panel temporarily saves a completed branch in the local panel-edge table along with any other previously completed branches. If all edges have not been polled, the current panel moves to the next edge.
[0052] The term "branch" can be understood as a path from the root to the top of the tree in the tree structure of the panel-edge table. For example, the current panel (tree root) is panel #4. Then, the branch can be the path from panel #4 to panel #2; the path from panel #4 to panel #7; the path from panel #4 to panel #6 through panel #8; the path from panel #4 to panel #1 through panel #8; the path from panel #4 to panel #3 through panel #8 and panel #5.
[0053] If all edges of the panel have been polled, the current panel marks itself as "TopologyComplete", creates a new entry in the local panel-edge table, writes its own physical panel ID to the child panel ID, writes the topology request incoming edge ID to the child panel edge ID, and uses this new panel-edge table to send a topology reply command back to the topology request incoming edge.
[0054] In the above manner, a panel-edge table of the logical connections of all light panels in the indicator light assembly can be derived, and the topology discovery process performed collectively by the panels can be completed. The panel-edge table can indicate which two lighting panels are connected together and through which edge they are connected. The completed panel-edge table can then be sent from the downstream panel connected to the controller to the controller.
[0055] Each light panel should locally record the current panel-edge table, which includes information about all its downstream sub-panels. Each light panel also stores the topology request incoming edge ID locally. During a power cycle, the above information will all be reset.
[0056] In some examples, for a light panel that receives a topology request (with the same round count, i.e., the value included in one field of the topology request command), if the light panel is in the "topology started" or "topology completed" state, it sends a topology reply (command type 0x05) with value = empty (i.e., Len = 0) back to the topology request incoming edge. If the panel is in the "new panel" state, it starts forwarding the topology request command downstream as described above.
[0057] Finally, the controller receives the topology reply from its downstream panels. It now has a complete panel-edge table that includes connection information about all panels logically connected in a tree structure. The entire topology discovery process is now complete. With this complete panel-edge table, the controller can assign a logical panel ID that maps to each physical panel ID. The controller can also report the complete topology information (with logical panel IDs) to the WiFi module of the light assembly, so the App of the remote device controlled by the user can update the topology display and light data calculations.
[0058] In some embodiments, the panel-edge table can be updated in real time or near real time when one or more new light panels are added to the light assembly or when one or more new light panels are removed from the light assembly. For example, the update can be completed by tracking topology changes as follows.
[0059] Tracking topology changes
[0060] The following will describe the tracking process in the case where a new light panel is added to an existing topology.
[0061] After power-up, all light panels are in the "New Panel" state. Each light panel with the "New Panel" state sends a New Panel Hello command to all its edges every 2s, with a random variance of + / - 1s.
[0062] In some examples, when a light panel with a "New Panel" or "Topology Started" or "Topology Changed" state receives a New Panel Hello command from a neighboring panel, it ignores the New Panel Hello command.
[0063] In some examples, when a light panel with a "topology complete" state receives a new panel hello command, it marks itself as a "topology changed" state. The light panel then waits until the next Sync Pulse command is received from the controller and immediately sends a Topology Changed command back to the controller via its Topology Request Incoming edge (i.e., the edge from which the Topology Request came). The Sync Pulse command is a downstream command from the controller to the light panel and is used as a timing clock signal from the controller.
[0064] In some examples, when a panel with a "topology complete" state receives a topology changed command, the panel marks itself as a "topology changed" state, and it immediately forwards the topology changed command to the controller via its topology request incoming edge.
[0065] In some examples, when the controller receives the Topology Changed command, it stops sending the Sync Pulse command and starts a new round of topology discovery process by issuing a Topology Request command in which the Round Count is incremented by 1. The Round Count is a value included in a field of the Topology Request command.
[0066] Therefore, the same topology discovery process as described above occurs, except that when a light panel receives a topology request command with a new round count, it resets any existing panel-edge tables and behaves like a new panel (has a "new panel" state).
[0067] Finally, the controller receives the topology reply message and completes the topology update.
[0068] The following will describe the tracking process in the case where a light panel is removed from an existing topology.
[0069] For example, during normal operation, the controller sends a sync pulse command every 500 ms, where the sync count is incremented by 1 each time.
[0070] In some examples, when a panel (with a "Topology Complete" state) receives a Sync Pulse command, it immediately forwards this Sync Pulse command to all of its downstream child panels only, and then sends a Sync Reply command back to the upstream panel.
[0071] In some examples, if the panel receives a sync reply, it ignores the sync reply. In some examples, if the panel does not receive a sync reply within 5 ms after sending a sync pulse, it marks itself as a "topology changed" state and immediately sends a topology changed command upstream to the controller via the sync pulse incoming edge (i.e., the edge from which the sync pulse came).
[0072] In some examples, if the controller does not receive a synchronization reply within 5 ms after sending a synchronization pulse, or later when it receives a topology changed command, it stops sending synchronization pulses and starts a new round of topology discovery process by issuing a topology request command in which the round count is incremented by 1.
[0073] The same topology discovery process then occurs, except that when a light panel receives a topology request command with a new round count, it resets any existing panel-edge tables and behaves like a new panel (has a "new panel" state).
[0074] Finally, the controller receives the topology reply message and completes the topology update.
[0075] For both the tracking process when a new light panel is added to an existing topology and the tracking process when a light panel is removed from an existing topology, it should be noted that when a panel with the "Topology Changed" state receives a synchronization pulse (command type 0x00), it immediately sends a Topology Changed command upstream to the controller via the synchronization pulse incoming edge.
[0076] Calculating XY Coordinates
[0077] This section of "Calculating XY Coordinates" will describe in detail how to derive an XY coordinate table by the controller based on a panel-edge table received from a downstream panel connected to the controller. The XY coordinate table may indicate coordinate information about each vertex of each light panel in the lamp assembly.
[0078] The controller derives or updates the XY coordinate table after the following trigger events:
[0079] The topology discovery process (after power-up) is completed; or
[0080] A topology change is detected and the topology update process is completed; or
[0081] A change in orientation is detected.
[0082] Orientation is important information for forming / deriving / updating the XY coordinate table through modeling. Orientation can be used to characterize the installation orientation of the lamp assembly, which can also reflect information about the angle between the reference edge of the downstream panel and the horizontal axis in the positive orientation. The controller can detect the orientation and orientation changes through at least one sensor.
[0083] To simplify the model, the orientation is rounded to one of 12 levels within a 360-degree circle, i.e., 0 / 30 / 60 / 90 / 120 / 150 / 180 / 210 / 240 / 270 / 300 / 330 degrees, according to the geometric characteristics of the geometry of the light panel (e.g., having a hexagonal shape, a diamond shape, or a triangle shape). These levels can be divided into two groups. For example, one group can be 0 / 60 / 120 / 180 / 240 / 300 / 360 degrees, and the other group can be 30 / 90 / 150 / 210 / 270 / 330 degrees.
[0084] Figure 4 Schematic diagram showing different orientation angles of a light panel having a hexagonal shape. Figure 5 Schematic diagram showing different orientation angles of a light panel having a triangular shape. Figure 6 Schematic diagram showing different orientation angles of a light panel having a diamond shape.
[0085] For better understanding, Figures 4 to 6 Line segments a and b are specifically labeled in each panel of the . Based on the geometric properties of the equilateral hexagon, equilateral quadrilateral (rhombus), and equilateral triangle, it can be understood that the proportional relationship between a and b can be determined. These figures also show the proportional relationship between a and b in each orientation. It should be noted that a and b are not set to any specific values and can be understood as units of length, which are related to the side lengths of the equilateral hexagon, equilateral quadrilateral, and equilateral triangle.
[0086] Typically, if the orientation is rounded to 0 / 60 / 120 / 180 / 240 / 300 / 360 degrees, the ratio between a and b is set to b=1.732 a; where a = hexagon side length / 2. If the orientation is rounded to 30 / 90 / 150 / 210 / 270 / 330 degrees, the ratio between a and b is set to a = 1.732 b; where b = side length of hexagon / 2.
[0087] Depending on the orientation, the X, Y coordinates of all vertices of the light panel with all shapes can be expressed as:
[0088] X coordinate = X value a; Y coordinate = Y value b; where the X value and Y value can be any integer.
[0089] Therefore, combined with the above reference Figures 1 to 6 Based on the description, the relative position relationship of each vertex of each edge of each type of light panel in different orientations (i.e., orientation angles) can be obtained. Based on these relative position relationships, a lookup table can be formed. The lookup table can be pre-stored in the controller and each light panel. For ease of understanding, we list a portion of the lookup table below.
[0090]
[0091] For example, refer to Figure 4 , for a panel having a hexagonal shape, assuming that the reference side is "A", the reference vertex is the right vertex of the reference side "A". Figure 1 From the preset examples of edge IDs and vertex IDs shown, it can be seen that the ID of the reference vertex is "0". For example, assume that the X-coordinate and Y-coordinate of the reference vertex "0" can be set to "x" and "y", respectively. Assume that the orientation angle of the reference edge "A" is 0 degrees. Then, based on the above lookup table (row 1 in the above figure), the X-coordinate and Y-coordinate of the reference vertex "1" can be calculated as "x+1" and "y+1", respectively. Similarly, the remaining vertices can be calculated and preset. By analogy, the X-values and Y-values of all vertices of all edges of all types of light panels in different orientations can be obtained.
[0092] In some examples, the lookup table includes a mapping between the following for each light panel: panel type, reference edge ID, orientation of the reference edge, X and Y values of the reference vertex, and X and Y values of the remaining vertices.
[0093] In some embodiments, based on the information in the above lookup table and the panel-edge table, the controller can calculate the X and Y coordinates of all vertices of all panels in the lamp assembly and derive an XY coordinate table.
[0094] In some examples, based on the panel-edge table and the lookup table, the controller can perform the following steps:
[0095] S1: The controller calculates all x and y coordinates of all vertices of the downstream panels connected to the controller;
[0096] S2: The controller may calculate all x and y coordinates of all vertices of at least one next downstream sub-panel connected to the downstream panel;
[0097] S3: The controller may calculate all x and y coordinates of all vertices of at least one sub-panel downstream of at least one next downstream sub-panel until all x and y coordinates of all vertices of all panels in the lamp assembly are obtained; and
[0098] S4: The controller may complete the XY coordinate table and send an XY table command with the XY coordinate table to all light panels along the topology.
[0099] S1 to S4 will be described in detail below.
[0100] In S1, based on the topology information recorded in the panel-edge table, the controller can find the panel ID of the downstream panel connected to the controller (for example, the panel ID is usually recorded as the sub-panel ID in the first row of the panel-edge table), thereby finding the sub-panel edge ID of the downstream panel connected to the controller. The downstream panel indicated by the sub-panel ID can be used as the current panel.
[0101] Based on the sub-panel edge ID and the orientation of the sub-panel edge indicated by the sub-panel edge ID, the controller can check the reference vertex ID from the lookup table and set the first reference vertex X=0, Y=0. For example, the controller can extract the panel type indicating the shape type from the panel ID (i.e., the sub-panel ID). Since the controller is connected to the sub-panel edge, the orientation of the sub-panel edge can be detected by a sensor positioned in the controller, and then the orientation is rounded to the angle level as we discussed above.
[0102] Now the controller has the panel type, reference edge ID (corresponding to the sub-panel edge ID), reference edge orientation (corresponding to the sub-panel edge orientation), and reference vertex ID. The controller can then check the remaining vertices from the lookup table. Since the reference vertex's x and y coordinates are set to X=0, Y=0, the controller can figure out all the x and y coordinates for the remaining vertices.
[0103] Given the above, the controller calculates all x and y coordinates of all vertices of the downstream panel connected to the controller. In some examples, the controller can fill in a row of the XY coordinate table with the corresponding panel ID of the downstream panel, the panel logical ID (assigned by the controller based on the detected topology), and all x and y coordinates of all vertices of the downstream panel.
[0104] In S2, the ID of the next downstream sub-panel can be checked from the panel-edge table, and the current panel edge ID and the sub-panel edge ID will be obtained. The current panel edge ID indicates the ID of the edge of the current panel connected to the next downstream sub-panel, hereinafter referred to as the "edge ID of the current panel". The sub-panel edge ID indicates the ID of the edge of the sub-panel connected to the current panel, hereinafter referred to as the "edge ID of the next downstream sub-panel".
[0105] Then, the orientation of the edge of the current panel that connects to its next downstream sub-panel can be calculated based on the orientation of the reference edge of the current panel that connects to its parent panel (indicated by the current panel edge ID in Panel-side table . Accordingly, the orientation of the edge of the next downstream sub-panel that connects to the current panel can be determined based on the orientation of the edge of the current panel.
[0106] In some embodiments, the determination of the orientation of the edge of the current panel that connects to the next downstream sub-panel can vary depending on the shape of the current panel. This determination will be described in detail in conjunction with the following examples.
[0107] For current panel = hexagon shape:
[0108] SD0 = ID of the reference edge of the current panel that connects to its parent panel;
[0109] SD1 = ID of the edge of the current panel that connects to the next downstream sub-panel;
[0110] SD0 orientation = reference edge orientation;
[0111] If SD1 > SD0, then SD1 orientation = SD0 orientation + (SD1 – SD0) 60;
[0112] If SD1 < SD0, then SD1 orientation = SD0 orientation - (SD0 – SD1) 60;
[0113] If SD1 orientation >= 360, then SD1 orientation = SD1 orientation - 360;
[0114] If SD1 orientation < 0, then SD1 orientation = SD1 orientation + 360.
[0115] For current panel = diamond shape:
[0116] SD0 = ID of the reference edge of the current panel that connects to its parent panel;
[0117] SD1 = ID of the edge of the current panel that connects to the next downstream sub-panel;
[0118] SD0 orientation = reference edge orientation;
[0119] Use the following table to obtain SD1 orientation.
[0120]
[0121] For current panel = triangle shape:
[0122] SD0 = The reference edge ID of the current panel connected to its parent panel;
[0123] SD1 = The edge ID of the current panel connected to the next downstream sub-panel;
[0124] SD0 Orientation = The reference edge orientation;
[0125] If SD1 > SD0, then SD1 Orientation = SD0 Orientation + (SD1 – SD0) 120;
[0126] If SD1 < SD0, then SD1 Orientation = SD0 Orientation - (SD0 – SD1) 120;
[0127] If SD1 Orientation >= 360, then SD1 Orientation = SD1 Orientation - 360;
[0128] If SD1 Orientation < 0, then SD1 Orientation = SD1 Orientation + 360.
[0129] Set SD2 = The edge ID of the next downstream sub-panel connected to the current panel;
[0130] Then, SD2 Orientation = (SD1 Orientation + 180) % 360 degrees, where "%" represents the mathematical operator symbol "mod".
[0131] From the panel-edge table, the controller can check the next downstream sub-panel ID and the sub-panel edge ID. Then, the controller can obtain the following information:
[0132] The panel type from the panel ID;
[0133] Reference edge ID = Sub-panel edge ID = SD2;
[0134] Orientation = SD2 Orientation (as per above); and
[0135] Reference vertex ID = Reference edge ID - "A".
[0136] In other words, the controller now has the panel type, reference edge ID, reference edge orientation (corresponding to the above orientation), and reference vertex ID. Then, the controller can check the remaining vertices from the lookup table. For example, assuming the X and Y coordinates of the reference vertex are set to x and y respectively, the controller can calculate all the X and Y coordinates of the remaining vertices.
[0137] In view of the above, the controller can calculate all x and y coordinates of all vertices of the next downstream sub-panel connected to the downstream panel. In some examples, the controller can fill the corresponding panel ID of the next downstream sub-panel, the corresponding panel logical ID (assigned by the controller based on the detected topology), and all x and y coordinates of all vertices of the next downstream sub-panel into one row of the XY coordinate table.
[0138] Then, the controller can repeat the above actions from the beginning of S2, and then can calculate all x and y coordinates of all vertices of all other next downstream sub-panels connected to the downstream panel. Accordingly, the controller can calculate all x and y coordinates of all vertices of at least one next downstream sub-panel connected to the downstream panel, and fill this information into the XY coordinate table.
[0139] In S3: the controller may repeat the action of S2 and calculate all x and y coordinates of all vertices of at least one sub-panel downstream of at least one next downstream sub-panel until all x and y coordinates of all vertices of all panels in the lamp assembly are obtained.
[0140] In S4: The controller may complete the XY coordinate table and send an XY table command to all light panels along the topology. The XY table command may carry the XY coordinate table and an orientation index. The orientation index may indicate the orientation of the light assembly and is associated with an angle between a reference edge of a downstream panel connected to the controller and a horizontal axis in a positive orientation, wherein the reference edge of the downstream panel is the edge connected to the controller. In some examples, the orientation index may have a value of 0 or 1 as described above.
[0141] When the light panel receives the XY table command, it stores the XY coordinate table included in the XY table command and forwards the XY table command to the corresponding downstream panel.
[0142] For better understanding, we list the XY table commands and Figure 2 An example of an XY coordinate table resulting from the exemplary topology shown.
[0143] XY Table Commands (from controller to downstream panel)
[0144]
[0145] Len = length of the value field in bytes
[0146] Orientation value = 0: means orientation angle = 0 / 60 / 120 / 180 / 240 / 300 degrees
[0147] Orientation value = 1: means orientation angle = 30 / 90 / 150 / 210 / 270 / 330 degrees
[0148] The orientation value means the value of the orientation index.
[0149] XY coordinate table:
[0150]
[0151] Panel ID Format: It is a physical panel ID that is unique to each panel. For example, the first two digits show the shape type:
[0152] - Panel IDs in the range of 0x00 00 00 00 – 0x3F FF FF FF mean a hexagonal shape;
[0153] - Panel IDs in the range of 0x40 00 00 00 – 0x7F FF FF FF mean a diamond shape;
[0154] - Panel IDs in the range of 0x80 00 00 00 – 0x8F FF FF FF mean a triangle shape.
[0155] Panel logical ID format: 0-255; it is the logical ID of each panel in the complete topology. The panel logical ID is assigned by the controller. Each panel logical ID is mapped to a physical panel ID. The panel logical ID can be used for optical data transmission later.
[0156] Xn & Yn = X and Y coordinates of vertex ID n;
[0157] X coordinate = X value a; Y coordinate = Y value b;
[0158] If orientation = 0, then b = 1.732 a; where a=side length of hexagon / 2.
[0159] If orientation = 1, then a = 1.732 b; where b = side length of hexagon / 2.
[0160] Figure 7 Examples of light assemblies with multiple light panels in different orientations are illustrated. The example on the left shows the case of orientation=1, and the example on the left shows the case of orientation=0.
[0161] When each light panel receives the XY Table command, it copies the logical panel ID of itself and all other panels into the stored local panel edge table, so each panel knows which logical ID maps to which physical panel ID in the local panel edge table.
[0162] Constant light setting
[0163] The light assembly can be controlled by a physical button, or remotely controlled by a device with an APP via the WiFi module of the light assembly. After receiving a new command from the WiFi module or the physical button, the controller can send a command for dynamic lighting effect control, such as a theme mode command. After each light panel receives the theme mode command, it starts to update the local light effect after receiving each synchronization pulse command (i.e., each timing clock signal).
[0164] In some embodiments, in response to receiving each synchronization pulse command, each light panel calculates each light effect data of each vertex thereof; and each light panel updates its own light effect based on each light effect data of each vertex. The light effect data can be calculated based on the theme data, the cycle data and the position data.
[0165] In some examples, the theme data is associated with an animation theme for the animated light effect. Upon receiving a theme mode command, each light panel may check the animation theme from the theme mode command. The theme mode command may carry a theme index indicating the animation theme. Different indexes may represent different animation themes. For example, if the theme index is 0, it indicates an animation theme of a horizontal wave moving upward; if the theme index is 1, it indicates an animation theme of a vertical wave moving to the right; if the theme index is 2, it indicates an animation theme of an oblique wave moving to the upper right, and so on. It will be appreciated that other animation themes may be indicated by other indexes.
[0166] According to the theme index, each light panel can obtain corresponding parameters associated with the corresponding animation theme based on the pre-stored theme information in each panel controller (e.g., MCU). For example, the parameters associated with the animation theme may include color range, animation cycle, etc.
[0167] In some embodiments, the periodic data can be associated with at least one of the following parameters: a synchronization pulse period, a frame period, a number of synchronization pulses per cycle, a number of frames per second, a number of frames per synchronization period, a number of frames per cycle, and a pulse count and a frame count.
[0168] For example, the synchronization pulse period depends on the period at which the controller sends the synchronization pulse command. For example, depending on the system configuration, the synchronization pulse period (Tsync) can be 500ms. The frame period can be calculated based on the frame rate. For example, depending on the system configuration, the frame rate can be 50fps. Then, the frame period (Tf) can be calculated, that is, Tf=1 / 50fps=20ms. Therefore, it can be determined that each light panel updates the local light effect 25 times (500ms / 20ms) after receiving each synchronization pulse command. For example, the synchronization pulse command may include the value of the synchronization pulse count. With each new synchronization pulse command, the value of the synchronization pulse count increases by 1.
[0169] For example, based on the synchronization pulse period, frame period and animation cycle period, the parameters such as the number of synchronization pulses per cycle, the number of frames per second, the number of frames per synchronization period, the number of frames per cycle and the frame count can be calculated.
[0170] In other words, the period data is associated with data for calculating which period in the animation theme the current time corresponds to.
[0171] In some embodiments, the position data can be associated with the X and Y coordinates of the vertex in the XY coordinate table and the size of the unit canvas. The unit canvas is a logical 2D area for displaying one complete cycle of the animated light effect. Outside this unit canvas area, the animated light effect will repeat. The size of the unit canvas includes the length of the unit canvas and the width of the unit canvas. The length of the unit canvas and the width of the unit canvas can be predefined in association with the orientation of the light assembly (e.g., indicated by an orientation index).
[0172] Figure 8 shows examples of unit canvases with different orientations. Figure 8 In the example in FIG. 1 , the light panel is shown as a hexagonal shape. However, it is understood that the light panel can have different shapes and the topology of the light panel can be different from FIG. Figure 8 Different than shown. Figure 8 The examples shown are for illustration only and are not intended to be limiting.
[0173] For example, the unit canvas size can be fixed as follows.
[0174] If the orientation index is 0, the length and width of the unit canvas can be defined as: L = 8 b,W=13 a, where b=1.732 a.
[0175] If the orientation index is 1, the length and width of the unit canvas can be defined as: L = 13 b,W=8 a, where a=1.732 b.
[0176] Based on the calculated position data, each light panel can determine position information about each vertex of each light panel. The position information indicates which canvas and where each vertex of each light panel is located on the canvas.
[0177] In view of the above, the light effect data of each vertex of each panel can be calculated based on the theme data, cycle data and position data. In summary, each panel can obtain the light effect data of each vertex of each light panel, and render the corresponding light effect based on the obtained light data. More specifically, one or more lighting elements at each vertex of each light panel can present different light effects, which enables each light panel to render rich lighting effects, and thus enables the lamp assembly to display more complex animation lighting effects. The control method provided by the present disclosure can more accurately control the display effect of the light panel through the coordinate calculation of each vertex of each light panel, so that the lamp assembly composed of light panels can display better and richer visual effects.
[0178] Three examples with more details of the light effect data for each vertex are provided below. It should be appreciated that these examples are for illustrative purposes only and are not intended to be exhaustive or limited to the disclosed embodiments. Any changes or modifications may be made as required in practice.
[0179] Theme 0: Horizontal waves moving upwards (Theme_Mode = 0)
[0180] Color (HSV) range:
[0181] HSV Hue: 1 – 360
[0182] HSV Saturation: Fixed to 255
[0183] HSV value: One of these levels: 15 / 31 / 47 / 63 / 79 / 95 / 111 / 127
[0184] Animation cycle: T=8s
[0185] The number of synchronization pulses per cycle = T / Tsync = 6s / 500ms = 16
[0186] Frames per second FPS=50
[0187] Number of frames per synchronization cycle = FPS Sync period = 50 0.5s=25
[0188] Number of frames per cycle = T FPS=8 50=400
[0189] ∆hue per frame = hue range per cycle / number of frames per cycle = 360 / 400 = 0.9
[0190] Xmin = the minimum X coordinate of all vertices in the XY table
[0191] Ymin = the minimum Y coordinate of all vertices in the XY table
[0192] Xmax = the maximum value of the X coordinates of all vertices in the XY table
[0193] Ymax = the maximum Y coordinate of all vertices in the XY table
[0194] Pulse count = sync pulse count % 16 = 0, 1, 2… 15, incremented by 1 with each sync pulse;
[0195] Frame count = 0, 1, 2… 24; starts at 0 and increments after each sync pulse.
[0196] When orientation = 0, at the vertex (X, Y):
[0197] Hue value = {pulse count Hue range / 16 + [(Y – Ymin) % 8] Tonal Range / 8+ Frame Count 0.9}% 360
[0198] When orientation = 1, at vertex (X, Y):
[0199] Hue value = {pulse count Hue range / 16 + [(Y – Ymin) % 13] Tonal Range / 13+ Frame Count 0.9}% 360
[0200] Theme 1: Vertical waves moving to the right (Theme_Mode=1)
[0201] Color (HSV) range:
[0202] HSV Hue: 1 – 360
[0203] HSV Saturation: Fixed to 255
[0204] HSV value: One of these levels: 15 / 31 / 47 / 63 / 79 / 95 / 111 / 127
[0205] Animation cycle: T=8s
[0206] The number of synchronization pulses per cycle = T / Tsync = 6s / 500ms = 16
[0207] Frames per second FPS=50
[0208] Number of frames per synchronization cycle = FPS Sync period = 50 0.5s=25
[0209] Number of frames per cycle = T FPS=8 50=400
[0210] ∆hue per frame = hue range per cycle / number of frames per cycle = 360 / 400 = 0.9
[0211] Xmin = the minimum X coordinate of all vertices in the XY table
[0212] Ymin = the minimum Y coordinate of all vertices in the XY table
[0213] Xmax = the maximum value of the X coordinates of all vertices in the XY table
[0214] Ymax = the maximum Y coordinate of all vertices in the XY table
[0215] Pulse count = sync pulse count % 16 = 0, 1, 2… 15, incremented by 1 with each sync pulse;
[0216] Frame count = 0, 1, 2… 24; starts at 0 and increments after each sync pulse.
[0217] When orientation = 0, at the vertex (X, Y):
[0218] Hue value = {pulse count Hue range / 16 + [(X – Xmin) % 13] Tonal Range / 13+ Frame Count 0.9}% 360
[0219] When orientation = 1, at vertex (X, Y):
[0220] Hue value = {pulse count Tonal range / 16 + [(X – Xmin) % 8] Tonal Range / 8+ Frame Count 0.9}% 360
[0221] Theme 2: Oblique wave moving to the upper right (Theme_Mode=2)
[0222] Color (HSV) range:
[0223] HSV Hue: 1 – 360
[0224] HSV Saturation: Fixed to 255
[0225] HSV value: One of these levels: 15 / 31 / 47 / 63 / 79 / 95 / 111 / 127
[0226] Animation cycle: T=8s
[0227] The number of synchronization pulses per cycle = T / Tsync = 6s / 500ms = 16
[0228] Frames per second FPS=50
[0229] Number of frames per synchronization cycle = FPS Sync period = 50 0.5s=25
[0230] Number of frames per cycle = T FPS=8 50=400
[0231] ∆hue per frame = hue range per cycle / number of frames per cycle = 360 / 400 = 0.9
[0232] For each vertex in the XY table, calculate the sum of its XY coordinates: SumXY = X + Y. Collect all these sum values into an array and sort them from smallest to largest.
[0233] Sum_min = the minimum value of the SumXY value of all vertices in the XY table
[0234] Sum_max = the maximum value of the SumXY value of all vertices in the XY table
[0235] Pulse count = sync pulse count % 16 = 0, 1, 2… 15, incremented by 1 with each sync pulse;
[0236] Frame count = 0, 1, 2… 24; starts at 0 and increments after each sync pulse.
[0237] At a vertex (X, Y):
[0238] Hue value = {pulse count Hue Range / 16 + [(X + Y – Sum_min) % 10] Tonal Range / 10+ Frame Count 0.9}% 360
[0239] Clause 1. In some embodiments, a method for a lamp assembly, wherein the lamp assembly includes a plurality of light panels connected to each other and a controller connected to a downstream panel among the plurality of light panels, the method comprising: discovering, by the plurality of light panels, the topology of the plurality of light panels in the lamp assembly to derive a topology information table; deriving, by the controller, a vertex information table based on the topology information table received from the downstream panel and the orientation of the lamp assembly; calculating, by each light panel, light effect data for each vertex of each light panel based on the vertex information table and upon receiving a timing clock signal from the controller; and rendering, by each light panel, a light effect based on the calculated light effect data for each vertex of each light panel.
[0240] Clause 2. The method of clause 1, wherein the topology information table indicates logical connections in the topology of the plurality of light panels in the light assembly.
[0241] Clause 3. The method according to any one of clauses 1 to 2, wherein the vertex information table indicates relative position information of each vertex of each light panel in the lamp assembly.
[0242] Clause 4. The method of any one of clauses 1 to 3, wherein the orientation of the light assembly is detected by the controller and associated with an orientation angle of the controller.
[0243] Clause 5. A method according to any one of clauses 1 to 4, wherein deriving the vertex information table comprises: calculating all x and y coordinates of all vertices of the downstream panel based on the topology information table, the lookup table and the orientation; and calculating all x and y coordinates of all vertices of all remaining light panels downstream of the downstream panel along the topology based on the topology information table, the lookup table and the orientation.
[0244] Clause 6. A method according to any one of clauses 1 to 5, wherein the lookup table is predefined and includes mapping relationships between: the panel type of the light panel, the reference edge ID of the reference edge, the reference edge orientation indicating the rounded angle between the reference edge of the downstream panel and the horizontal axis in a positive orientation, the X and Y values of the reference vertex of the reference edge, and the X and Y values of the remaining vertices of the light panel.
[0245] Clause 7. A method according to any one of Clauses 1 to 6, wherein calculating the light effect data for each vertex of each light panel also includes calculating the light effect data for each vertex of each light panel based on a theme indicated by a theme mode command received from the controller, the orientation and the vertex information table.
[0246] Clause 8. The method of any of Clauses 1 to 7, wherein rendering a light effect by each light panel further comprises rendering a light effect based on the light effect data and the orientation of each vertex of each light panel.
[0247] Clause 9. A method according to any one of clauses 1 to 8, wherein the light effect data is calculated based on theme data, period data and position data.
[0248] Clause 10. The method of any one of clauses 1 to 9, wherein the theme data is associated with an animation theme of the light effect.
[0249] Clause 11. A method according to any one of clauses 1 to 10, wherein the period data is associated with data for calculating which period of the animation theme the current time corresponds to.
[0250] Clause 12. A method according to any one of clauses 1 to 11, wherein the position data is associated with the x and y coordinates of the vertices in the vertex information table and the size of a unit canvas.
[0251] Clause 13. The method of any one of clauses 1 to 12, wherein the unit canvas is a logical 2D area used to render one complete cycle of an animated light effect.
[0252] Clause 14. The method according to any one of clauses 1 to 13, wherein the size of a unit canvas comprises a length of the unit canvas and a width of the unit canvas, wherein the length and the width change depending on the orientation.
[0253] Clause 15. A method according to any one of clauses 1 to 14, wherein the orientation of the lamp assembly is represented by an orientation index, the vertex information table and the orientation index are received by the downstream panel via a command from the controller and forwarded to each light panel along the topology.
[0254] Clause 16. The method of any one of clauses 1 to 15, wherein discovery of the topology is triggered when the controller is first started after the light assembly is powered on, or when a change in topology is detected.
[0255] Clause 17. The method of any one of clauses 1 to 16, wherein each light panel detects the topology change when one or more new light panels are added to the light assembly or when one or more existing light panels are removed from the light assembly.
[0256] Clause 18. The method of any one of clauses 1 to 17, wherein the vertex information table is updated when the topology is found to be complete, when a change in the topology is detected and an update of the topology is complete, or when a change in orientation is detected.
[0257] Clause 19. The method of any one of clauses 1 to 18, wherein the vertex information table is updated when the topology is found to be complete, when a change in the topology is detected and the updating of the topology is complete, or when a change in orientation is detected.
[0258] Clause 20. In some embodiments, a lamp assembly includes: a plurality of light panels that can be configured to be connected to each other; and a controller that can be configured to be connected to a downstream panel among the plurality of light panels; wherein the controller is configured to derive a vertex information table based on a topology information table received from the downstream panel and the orientation of the lamp assembly, wherein the topology information table indicates the topology of the plurality of light panels in the lamp assembly; and wherein each of the plurality of light panels includes a panel controller, wherein the panel controller is configured to: receive and store the vertex information table; calculate light effect data for each vertex of the light panel based on the vertex information table; and control one or more light elements located at each vertex of the light panel to render a light effect based on the calculated light effect data for each vertex of the light panel.
[0259] Descriptions of various embodiments have been presented for illustrative purposes, but these descriptions are not intended to be exhaustive or limited to the disclosed embodiments. The terms used herein are selected to best explain the principles of the embodiments, practical applications or technical improvements of technologies found in the marketplace, or to enable those skilled in the art to understand the embodiments disclosed herein.
[0260] In the foregoing, reference is made to the embodiments presented in the present disclosure. However, the scope of the present disclosure is not limited to the specific described embodiments. Rather, any combination of the foregoing features and elements, whether or not related to different embodiments, is contemplated to implement and practice the contemplated embodiments. In addition, although the embodiments disclosed herein may achieve advantages over other possible solutions or over the prior art, whether or not a given embodiment achieves a specific advantage does not limit the scope of the present disclosure. Therefore, the foregoing aspects, features, embodiments and advantages are merely illustrative and are not considered to be elements or limitations of the appended claims unless expressly stated in the claims.
[0261] Various aspects of the present disclosure may take the form of an entirely hardware implementation, an entirely software implementation (including firmware, resident software, microcode, etc.) or an implementation combining software and hardware aspects, which may generally be referred to herein as a "circuit", "module", "unit" or "system".
[0262] The present disclosure may be a system, method and / or computer program product. The computer program product may include one (or more) computer-readable storage media having computer-readable program instructions thereon for causing a processor to perform various aspects of the present disclosure.
[0263] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanical encoding device (such as a protruding structure with instructions recorded thereon in a punch card or a groove), and any suitable combination of the foregoing. As used herein, a computer-readable storage medium is not interpreted as a temporary signal itself, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagated through a waveguide or other transmission medium (e.g., a light pulse through a fiber optic cable), or an electrical signal transmitted by a wire.
[0264] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to a corresponding computing / processing device, or downloaded to an external computer or external storage device via a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network). The network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers.
[0265] Various aspects of the present disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods, devices (systems) and computer program products according to embodiments of the present disclosure. It should be understood that each box in the flowchart illustration and / or block diagram and the combination of boxes in the flowchart illustration and / or block diagram can be implemented by computer-readable program instructions.
[0266] These computer-readable program instructions may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device to produce a machine, such that the instructions executed by the processor of the computer or other programmable data processing device create means for implementing the functions / actions specified in one or more boxes of the flowchart and / or block diagram.
[0267] The flow charts and block diagrams in the accompanying drawings illustrate the architecture, functionality and operation of possible implementations of the system, method and computer program product according to various embodiments of the present disclosure. In this regard, each frame in the flow chart or block diagram can represent a module, segment or part of an instruction, and the module, segment or part of the instruction includes one or more executable instructions for implementing the specified logical function. In some alternative embodiments, the function marked in the frame can occur in an order different from the order marked in the figure. For example, in fact, depending on the functionality involved, the two frames shown in succession can be executed substantially simultaneously, or the frames can be executed in reverse order sometimes. It should also be noted that each frame of the block diagram and / or flow chart illustration and the combination of the frames in the block diagram and / or flow chart illustration can be implemented by a system based on dedicated hardware that performs a specified function or action or performs a combination of dedicated hardware and computer instructions.
[0268] While the foregoing is directed to embodiments of the present disclosure, other and further embodiments of the present disclosure may be envisaged without departing from the basic scope of the present disclosure, and the scope of the present disclosure is determined by the appended claims.
Claims
1. A method for a lamp assembly, wherein: The light assembly includes a plurality of light panels connected to each other and a controller connected to a downstream panel of the plurality of light panels, the method comprising: discovering the topology of the plurality of light panels in the lamp assembly from the plurality of light panels to obtain a topology information table; deriving, by the controller, a vertex information table based on the topology information table received from the downstream panel and the orientation of the light assembly; calculating, by each light panel, light effect data for each vertex of each light panel based on the vertex information table and upon receiving a timing clock signal from the controller; and Light effects are rendered by each light panel based on the calculated light effect data for each vertex of each light panel.
2. The method according to claim 1, wherein: The topology information table indicates logical connections in the topology of the plurality of light panels in the light assembly.
3. The method according to claim 1, wherein: The vertex information table indicates relative position information of each vertex of each light panel in the lamp assembly.
4. The method according to claim 1, wherein: The orientation of the light assembly is detected by the controller and is associated with an orientation angle of the controller.
5. The method according to claim 1, wherein: Deriving the vertex information table includes: Calculating all x and y coordinates of all vertices of the downstream panel based on the topology information table, the lookup table, and the orientation; and Based on the topology information table, the lookup table and the orientation, all x and y coordinates of all vertices of all remaining light panels downstream of the downstream panel along the topology are calculated.
6. The method according to claim 5, wherein: The lookup table is predefined and includes mapping relationships between: the panel type of the light panel, the reference edge ID of the reference edge, a reference edge orientation indicating the rounded angle between the reference edge of the downstream panel and the horizontal axis in a positive orientation, the X and Y values of the reference vertex of the reference edge, and The X and Y values of the remaining vertices of the light panel.
7. The method according to claim 1, wherein: Calculating light effect data for each vertex of each light panel further includes calculating light effect data for each vertex of each light panel based on a theme indicated by a theme mode command received from the controller, the orientation, and the vertex information table.
8. The method according to claim 1, wherein: Rendering a light effect by each light panel further includes rendering a light effect based on the light effect data and the orientation of each vertex of each light panel.
9. The method according to claim 8, wherein: The light effect data is calculated based on the theme data, the cycle data and the position data.
10. The method according to claim 9, wherein: The theme data is associated with an animation theme of the light effect.
11. The method according to claim 10, wherein: The period data is associated with data for calculating which period of the animation theme the current time corresponds to.
12. The method according to claim 9, wherein: The position data is associated with the x and y coordinates of the vertices in the vertex information table and the size of the unit canvas.
13. The method according to claim 12, wherein: The unit canvas is a logical 2D area used to render one complete cycle of animated light effects.
14. The method according to claim 13, wherein: The size of the unit canvas includes a length of the unit canvas and a width of the unit canvas, wherein the length and the width change depending on the orientation.
15. The method according to claim 1, wherein: The orientation of the light assembly is represented by an orientation index, and the vertex information table and the orientation index are received by the downstream panel via a command from the controller and forwarded to each light panel along the topology.
16. The method according to claim 1, wherein: The discovery of the topology is triggered when the controller is first started after the lamp assembly is powered on, or when a topology change is detected.
17. The method according to claim 16, wherein: The topology change is detected when one or more new light panels are added to the light fixture or when one or more existing light panels are removed from the light fixture.
18. The method according to claim 16, wherein: The vertex information table is updated when the topology is found to be complete, when the topology change is detected at each light panel and the update of the topology is completed, or when an orientation change is detected.
19. The method according to claim 1, wherein: The plurality of light panels have at least one shape of a hexagon, a rhombus, and a triangle.
20. A lamp assembly comprising: a plurality of light panels, the plurality of light panels being configurable to be connected to each other; as well as a controller configurable to be connected to a downstream panel of the plurality of light panels; wherein the controller is configured to derive a vertex information table based on a topology information table received from the downstream panel and an orientation of the light assembly, and the topology information table indicates a topology of the plurality of light panels in the light assembly; and Each of the plurality of light panels comprises a panel controller, and the panel controller is configured to: receiving and storing the vertex information table; and Based on the vertex information table, calculating light effect data of each vertex of the light panel; and Based on the calculated light effect data of each vertex of the light panel, one or more light elements located on each vertex of the light panel are controlled to render light effects.