Abstract:
A lighting controller for performing lighting control operations of decorative lighting elements is disclosed. The controller comprises a processor and an electricity supply connector to which a lighting element is connectable. The controller also comprises a switching device for delivering electricity supply to a lighting element connected to the electricity supply connector. The processor calculates the timing and duration for modulating the lighting element brightness and accordingly actuates the switching device to deliver electricity supply to the lighting element.

Description:
FIELD OF INVENTION 
     The invention relates generally to the control of lights. In particular, the invention relates to the control of strings of lighting elements to provide multiple lighting effects and sequence lighting patterns. 
     BACKGROUND 
     A number of U.S. patents disclose the conventional control of switching and brightness of decorative or display lighting sets using lighting controllers. In low-end implementations, a lighting controller either works in a stand-alone mode or is connected to a computer so that a user may change the sequence of switching and brightness of lighting elements. These lighting controllers are thus not designed for large-scale deployment other than in situations where restricted extensions of decorative lighting occur through the use of additional powering devices. In situations where large numbers of lighting controllers are deployed, lighting operations are not synchronized because each lighting controller has an independent timing mechanism and therefore operates independently. 
     Conventional lighting control operations also typically involve use of various forms of logic gates or mechanical devices and resistive/capacitive pairs (RC) to generate timing to control the intensity and the duration of lighting. Thus, such lighting control operations do not involve changing profiles of brightness directly by software. The lighting control operations are disclosed in U.S. Pat. Nos. 4,890,000, 4,125,781, 4,215,277, 4,678,926, 5,300,864, and 5,629,587. 
     With conventional lighting control operations, there are a number of limitations. For example, in many situations involving lighting decorations, such as the decoration of plants and trees in a garden, conventional ‘disco’ lighting effects with flickering and flashing lights may not suit the quiet and restful environment found in a garden. Additionally, the electric current drawn by a large number of lighting elements such as light bulbs in situations requiring large-scale deployment of lighting decorations may be more than what a stand-alone lighting controller delivers. 
     It is therefore clear from the foregoing limitations that a different type of lighting controller is necessary. 
     SUMMARY 
     In accordance with an aspect of the invention a lighting controller for performing lighting control operations of decorative lighting elements is provided. The controller comprises a processor and an electricity supply connector to which a lighting element is connectable. The controller also comprises a switching device for delivering electricity supply to a lighting element connected to the electricity supply connector. The processor calculates the timing and duration for modulating the lighting element brightness and accordingly actuates the switching device to deliver electricity supply to the lighting element. 
    
    
     BRIEF DESCRIPTION OF DRAWINGS 
     Embodiments of the invention are described hereinafter with reference to the drawings, in which: 
     FIG. 1 illustrates a schematic diagram of a lighting controller according to a preferred embodiment of the invention; 
     FIG. 2 illustrates the waveform of a reference alternating current (A/C) electricity supply; 
     FIG. 3 illustrates the waveform of a square wave present at a reference pin of a micro-controller in FIG. 1; 
     FIG. 4 illustrates a the waveform of a pulse signal generated at a pulse pin of the micro-controller in FIG. 1; 
     FIG. 5 is a Software System Overview flowchart; 
     FIG. 6 is a System Initialisation and Maintenance Module flow chart; 
     FIG. 7 is a flowchart depicting a macro view of Modulation Subroutine Modules, which includes four Modulation Subroutine Modules; 
     FIG. 8 is an Idle Time Handler Module flowchart; 
     FIG. 9 is a flowchart of an Interrupt Service Routine that generates the pulse signal to energise the TRIACS means; and 
     FIG. 10 is a Modulation Subroutine Module flowchart. 
    
    
     DETAILED DESCRIPTION 
     In order to meet the foregoing needs pertaining to conventional lighting control operations, a lighting controller that produces a wide variety of lighting displays characterised by synchronous and continuous modulated brightness of strings of lighting elements is provided. During lighting control operations, the lighting controller controls delivers electrical power to strings of lighting elements using power sockets and performs brightness modulation of the strings of lighting elements through the power sockets. Through the lighting controller, the brightness of decorative strings of lighting elements may be modulated to any level —independently increasing or decreasing at any rate or stopped at any point—to produce special lighting effects such as the emulation of a fireworks display. The lighting controller may also enable a mixture of lighting colours to be produced by allowing different levels of colour intensities to be displayed for different strings of lighting elements with different lighting colours. Furthermore, the lighting controller also provides for low-rate modulation of light intensities thereby resulting in gradual transformation of lighting colours from one lighted string of lighting elements to the next lighted string of a different lighting colour. 
     A number of lighting controllers may interoperate to collectively act as a single entity. In such an arrangement, complicated wiring connections are not required for conveying synchronisation signals among multiple lighting controllers. Instead, group synchronisation of the lighting controllers is achieved through a common alternating-current (A/C) mains providing electricity supply from which the lighting controllers tap electricity. 
     A micro-controller is preferably used in the lighting controller according to embodiments of the invention, in which the modulation of light intensity of strings of lighting elements is performed by preferably using pulse signals generated directly by the micro-controller. The control logic of the lighting controller is codified in software that is executed by the micro-controller while performing lighting control operations. 
     In lighting control operations, the micro-controller preferably successively calculates and generates the pulse signals in every half period of an A/C cycle during the process of brightness modulation. The overall timing of the software-based lighting control operations is preferably locked onto the A/C mains frequency. Since the A/C mains frequency is essentially a non-deviating frequency which is ubiquitous to all A/C sockets connected to the A/C mains, the lighting controllers that are connected to the A/C sockets are synchronised to the A/C mains frequency thereby exhibiting similar and predictable lighting control operations, which in this case is a similar pattern of lighting. 
     There are manifold advantages associated with the lighting controller. A primary advantage of using the lighting controller is that the lighting controller performs lighting control operations in a stand-alone mode as well as a synchronised-group mode. In the synchronised-group mode, a number of lighting controllers may synchronise as a group and lock onto the A/C mains frequency when the lighting controllers are connected to the common A/C mains and switched-on at the same time using a mains circuit breaker. Hence, no additional connection wiring is needed for a large number of lighting controllers to operate in the synchronised-group mode. 
     A further advantage of using the lighting controller is that the lighting controller modulates the light intensities of strings of lighting elements through a Modulation Subroutine Module (described in greater detail hereinafter) in the software. This software module successively calculates timing values and positions of pulse signals generated by the micro-controller with substantially precise timing relative to the zero crossing timing of the A/C mains to energise triacs for delivering power to strings of lighting elements. Changes in the calculated values of the timing for generating pulse signals eventually controls the ramp-up and ramp-down of power levels delivered through each triac, resulting in the modulation of the intensity of each string of lighting elements. 
     Yet another advantage of using the lighting controller is that the lighting controller uses other software modules to load the various internal control parameters to the Modulation Subroutine Module to produce various brightness profiles and lighting effects in strings of lighting elements through the triacs. 
     A still further advantage of using the lighting controller is that the lighting controller utilises software to generate various sequencing controls to provide various sequences of lighting effects in which the sequencing controls only affect power sockets to which strings of lighting elements are connected. Hence, limited intelligence is built into the lighting controller, so that in a practical situation where a user may not want to connect a string of lighting elements to every power socket, the lighting controller performs sequencing controls only according to the number of strings of lighting elements connected. Furthermore, when a connected string of lighting elements burns out, the lighting sequences are not disrupted because another string of lighting elements takes over. 
     With reference to a schematic diagram shown in FIG. 1, the hardware of the lighting controller according to a preferred embodiment is described in detail. A lighting controller printed circuit board (PCB) is located in a housing with A/C wiring ACin and a power plug PLU for connection to an A/C socket (not shown) to power the lighting controller and to deliver power to strings of lighting elements connected to a number of power sockets S 1  to S 4 . Triacs T 1  to T 4  are used to switch A/C electricity supply to each power socket S 1 , S 2 , S 3 , or S 4 . The number of power sockets to be implemented is dependent on the number of triacs used and corresponding software modules used in lighting control operations. 
     A power ON/OFF switch SW is connected in series with the A/C wiring ACin to allow a user to switch off the lighting controller when not in used. A fuse F 1  is connected in series with the ON/OFF switch SW to provide short-circuit protection in the event of a short circuit in any connected string of lighting elements. An over-voltage protection device MOV 1  for suppressing any spikes in the A/C electricity supply provides additional protection for the triacs T 1  to T 4 . 
     A capacitor C 1  is used to supply an A/C electricity supply to a Zener diode D 1  with 5.6 volts rating. A 5.6 volts direct current (D/C) voltage developed across the Zener diode D 1  then passes through a diode D 2  and charges up a capacitor C 2  to a D/C voltage of 5 volts. A 5 volts D/C supply is thus formed across the terminals of the capacitor C 2 , a PCB reference ground GND being connected to one of the capacitor C 2  terminals, and is used to power a micro-controller U 1 . A capacitor C 3  placed in parallel with the capacitor C 2  is used for filtering the 5 volts D/C supply by decoupling any A/C noise that is generated by the micro-controller U 1 . A resistor R 11  is used to limit the charging current passing through the capacitor C 1  and a resistor R 12  is used to discharge any current remaining in the capacitor C 1  when the ON/OFF switch SW is open. 
     A crystal XT 1 , or any other similar resonating device such as a ceramic resonator, is connected to the micro-controller U 1  for providing an oscillating frequency. The micro-controller U 1  may be an embedded chip package of any form factor or bonded to the PCB. An example of a device that may be used as the micro-controller U 1  is the PIC16F628 micro-controller from Microchip Technology, Inc. 
     A resistor R 9  is connected in series with the fuse F 1  and to reference pin PIN 2  of the micro-controller U 1  to convert the A/C electricity supply (50 Hertz or 60 Hertz)  201  as shown in FIG. 2 into a square wave  203  as shown in FIG.  3 . Each time the A/C electricity supply reaches a zero crossing point  202 , the square wave  203  changes voltage levels so that the micro-controller U 1  may take reference from a leading edge  200  of each cycle of the A/C electricity supply. The substantially high resistance of resistor R 9  of several mega-ohms prevents excessive current from the A/C electricity supply  201  from damaging the micro-controller U 1 . A pull-up resistor R 10  connected between a reset pin PIN 4  of the micro-controller U 1  and the 5 volt supply and is used to drive the reset pin PIN 4 . 
     Resistors R 1 , R 2 , R 3 , R 4  are connected to detect pins PINl 3 , PIN 12 , PIN 11 , and PIN 10 , respectively, of the micro-controller U 1  to detect the presence of any string of lighting element, such as a string of decorative light bulbs, connected to any power socket S 1 , S 2 , S 3 , or S 4 , respectively. A signal  6 ,  7 ,  8  or  9  bearing the same waveform as the square wave  203  may be present at any detect pin PIN 13 , PIN 12 , PIN 11 , or PIN 10 , thereby indicating that a string of lighting elements is connected to the corresponding power socket S 1 , S 2 , S 3 , or S 4 . In relation to any power socket S 1 , S 2 , S 3 , or S 4  to which a string of lighting elements is not connected, the corresponding pin PIN 13 , PIN 12 , PIN 11 , or PIN 10  remains floating with reference to the micro-controller U 1  ground pin PIN 5 , which is connected to the PCB reference ground GND. A software module processes the signals  6 ,  7 ,  8  or  9  to detect the presence or absence of a string of lighting elements at any power socket S 1 , S 2 , S 3 , or S 4 . 
     Pulse signals  1 ,  2 ,  3  and  4 , as shown in FIG. 4, are provided by pulse pins PIN 9 , PIN 8 , PIN 7 , and PIN 6 , respectively, and sent through respective series resistors R 5 , R 6 , R 7  and R 8  to trigger or actuate the triacs T 1 , T 2 , T 3 , and T 4 , respectively, to turn on and deliver the A/C electricity supply  201  to the respective power sockets S 1 , S 2 , S 3 , or S 4 . The triacs T 1  , T 2 , T 3 , and T 4  turn off once the A/C electricity supply  201  reaches the next zero crossing point therefore cutting off the A/C electricity supply  201  to the power sockets S 1 , S 2 , S 3 , or S 4 . The pulse signals  1 ,  2 ,  3  and  4  may be generated at any time within window periods  209  as shown in FIG.  4 . If a pulse signal  1 ,  2 ,  3 , or  4  is generated at the beginning of a window period  209 , the respective triac T 1  , T 2 , T 3 , or T 4  is turned on early in the window period  209  and therefore the light intensity of the respectively connected string of lighting elements is at the highest. Conversely, if a pulse signal  1 ,  2 ,  3 , or  4  is generated at near the end of a window period  209 , the light intensity of the respective connected string of lighting elements is at the lowest. 
     The software codifying the control logic for the lighting controller is a multi-process program. Hence, most of the codes are preferably reused for different processes of similar nature. For efficacy reasons, the description provided hereinafter with reference to FIGS. 5 to  10  thus only provides details of processes of different nature. Cross- or multi-process manipulations are also highlighted to show how different processes interact. 
     With reference to FIG. 5, the lighting controller, hereinafter referred to generally as the system, starts lighting control operations in process  100  upon power on. All hardware and software system resources are reset in a process  101  to a fix value. The system initialises in a process  102  all micro-controller U 1  resources, for example Reset Vectors, Interrupt Service Routine Vectors, and etc., to begin program execution. After which, the program runs by looping infinitely in a process  103  until the power is switch off, where the system terminates lighting control operations immediately in a process  104 . 
     The program execution is explained in terms of processes hereinafter and all different processes are mutually exclusive in terms of system resources, for example, memory locations and registers, and time of execution. There are four main variables in the program, namely Pulse Position, Pulse Position Counter, Ramp Rate and Ramp Value with Sign Bit. These variables are private, in terms of uniqueness, to corresponding processes. In the system with N number of processes, there are N sets of such variables, each set having values unique to corresponding processes. This allows independent control of light modulation of each string of lighting elements connected to each corresponding power socket S 1 , S 2 , S 3 , or S 4 . Hence, the program may be scaled to include more processes to control additional triacs to deliver electricity supply to additional power sockets. 
     When the term ‘program’ is used herein, the term refers to all the various processes as one entity. Similarly, when the term ‘module’ is used, the term refers to the conceptual embodiment of a process. 
     The looping process  103  is described hereinafter to explain how the program through the different processes interacts with the hardware in the system to produce the electrical effects resulting in the generation of pulse signals shown in FIG.  4 . 
     Conceptually, the looping process  103  includes various subroutine modules  106  (FIG.  6 ),  122  (FIG.  8 ),  130  (FIG.  9 ),  144 ,  146  and  151  (FIG.  10 ). The looping process  103  also includes a subroutine module  116  (FIG.  7 ), which is an exception since the subroutine module  116  includes four unique processes that share a same source code and is therefore strictly not a subroutine module. 
     The subroutine module  106  is known as a System Initialisation and Maintenance Module. The purpose of this subroutine module is to set up and maintain operating parameters and variables for subsequent subroutines. The System Initialisation and 
     Maintenance Module is also the subroutine responsible for manipulating the variables so that various effects, the parameters of which are stored in micro-controller U 1  memory, may manifest through progressive looping. To elaborate further, the parameters store the amount of changes that need to be added or subtracted from the variables so that the ramping-up or -down effects may be observed. A large parameter value signifies a large amount of change in brightness and a small parameter is observable as a very gradual change in brightness. 
     After the System Initialisation and Maintenance Module is executed, the subroutine module  116  known as Modulation Subroutine Modules is executed. In the preferred embodiment, four triacs T 1  to T 4  are used for delivering electricity supply to the power sockets S 1  to S 4 . Therefore, four processes  117 ,  118 ,  119 , and  120  are executed in the Modulation Subroutine Module regardless of the number of power socket S 1  to S 4  that are connected to strings of lighted elements. 
     The Modulation Subroutine Modules basically determine at which point and through which pulse pin PIN 9 , PIN 8 , PIN 7 , or P 1 N 6  to send a pulse signal  1 ,  2 ,  3 , or  4 , respectively, to trigger or fire the corresponding triac T 1 , T 2 , T 3 , or T 4 . The Modulation Subroutine Modules do not cause the pulse signals  1 ,  2 ,  3 , and  4  to fire but calculate values known as Pulse Positions for generating the pulse signals  1 ,  2 ,  3 , and  4  and store the values in variables. The Modulation Subroutine Modules are also synchronised to the zero crossing points  202  so that all other lighting controllers executing the same program may create exactly the same lighting effect. The Modulation Subroutine Module is executed four times for the four power sockets S 1  to S 4  after which the program waits for the next zero crossing point  202  in an Idle Time Handler Module  122  as shown in FIG.  7 . During the wait state and other times when the micro-controller U 1  Interrupt Handler is not disabled, an Interrupt signal triggers the micro-controller U 1  to execute an Interrupt Service Routine Module  130 . In the Interrupt Service Routine Module  130 , the variables calculated in the Modulation Subroutine Modules are used to trigger the triacs T 1  to T 4 . Depending on the value of the variable for each process, a corresponding triac T 1  , T 2 , T 3 , or T 4  may receive the pulse signal  1 ,  2 ,  3 , or  4 , respectively, at the appropriate moment so as to generate the correct amount of electricity current for a smooth modulation of light brightness. 
     With reference to FIG. 6, the System Initialisation and Maintenance Module  106  starts execution in a step  105 . The primary function of the System Initialisation and Maintenance Module  106  is to re-initialise the looping process  103  at every zero crossing point  202  with the effect of group-synchronisation in situations where multiple lighting controllers are used, and perform maintenance functions including time delay for pattern sequencing. 
     A first step  107  during the execution of the System Initialisation and Maintenance Module  106  is the disabling of the micro-controller U 1  Interrupt Handler so that no external signals can interrupt the looping process  103  during the crucial phase when maintenance subroutines are executed in the looping process  103 . 
     This is followed by a step  108  to update values known as Pulse Position Counters by copying the Pulse Positions values. The looping process  103  then enables the micro-controller U 1  Interrupt Handler in step  109  to allow an internal timer signal to trigger the Interrupt Service Routine Module  130 . 
     The current process continues in a step  110  with performing various Miscellaneous Timing Management Routines to ensure synchronised execution of the various processes. 
     The current process then checks the status of the power sockets S 1  to S 4  in step  111  by polling the power sockets S 1  to S 4  for the square wave signal  6 ,  7 ,  8 , or  9 . If a square wave signal  6 ,  7 ,  8 , or  9  of the same frequency with the A/C mains is detected, the corresponding power socket S 1 , S 2 , S 3 , or S 4  is connected and is marked as active. If a signal bearing a waveform other than a square wave is detected, the corresponding power socket S 1 , S 2 , S 3 , or S 4  is not connected, and is marked as inactive. In both cases, a status variable is updated to reflect the appropriate state of the power socket S 1 , S 2 , S 3 , or S 4 . 
     The current process continues by dynamically assigning various Modulation Subroutine Modules to different output power sockets S 1  to S 4  in a step  112 . The assignment may be randomly determined or pre-loaded from a special profile. The effect of this is that different strings of lights with different colours exhibit various different patterns of lighting effects at different time. 
     Once the assignment is completed, the current process initialises a Sequence Control event in a step  113 , which controls the pattern generation based on a multitude of effect patterns that are pre-loaded. These effect patterns allow the display of various effects such as fireworks, gentle wave, etc. The Sequence Control event accomplishes the effects patterns by setting certain parameters in the step  113  so that a Monitor Sequence Progress event occurring in a step  114  may handle the actual execution of the effect pattern. 
     The effects patterns consist of various parameters that are organised in groups of steps. These groups form effects patterns that may be created or modified by a producer. The Monitor Sequence Progress event in the step  114  monitors the groups assigned to the various modules and track the steps that have been executed. When the steps have been executed, a new group of effects patterns is assigned to another module for execution. Once that is complete, the looping process  103  exits the System Initialisation and Maintenance Module in a step  115  and proceeds to the Modulation Subroutine Modules  116  (MSRs). 
     With reference to a macro view flowchart in FIG. 7, the Modulation Subroutine Modules  116  are described in greater detail to illustrate the relationship between the different processes designated MSR 1    117  through MSR 4    120 . The processes MSR 1    117  through MSR 4    120  essentially rely on execution of the same source code, the only difference being the parameters loaded into each Modulation Subroutine Module. As illustrated in FIG. 7, the different processes are executed in sequence  117 ,  118 ,  119 ,  120 , before the looping process  103  proceeds in a step  121  to the Idle Time Handler Module  122 . 
     With reference to FIG. 8, the looping process  103  enters the Idle Time Handler Module  122  in the step  121 . Since the micro-controller operates at a much faster rate than half an A/C cycle, a long period of idle time passes during a wait event in a step  123  before the next zero crossing point  202  is reached. The current process checks for a zero crossing point  202  in a step  124 . If a zero crossing point  202  detected, the micro-controller Interrupt Handler is disabled in a step  125  so the current process exits in a step  126  and returns in a step  156  to update the next Pulse Position Counters in the step  108 . Otherwise, the current process loops back to the step  123 . 
     With reference to FIG. 9, the operation of the Interrupt Service Routine Module  130 , hereinafter referred to generally as ISR  130 , is described. The ISR  130  is a special subroutine module because the ISR  130  may be executed at any time regardless of at which point the program is executing, except when the microcontroller U 1  Interrupt Handler is disabled. When ISR  130  is executed, the program is halted and program states including registers and stacks pointers are saved. The micro-controller U 1  then loads the ISR  130  and begins execution. 
     The ISR  130  is used when a critical real-time function needs to be executed without delay, such as the generation of a pulse signal  1 ,  2 ,  3 , or  4  to fire a triac T 1 , T 2 , T 3 , or T 4 . 
     After the program is halted, the ISR  130  first decrements a Pulse Position Counter associated with the MSR 1    117  in a step  131  and checks if the Pulse Position Counter is equal to zero in a step  132 . If the Pulse Position Counter is zero, a pulse signal  1 ,  2 ,  3 , or  4  in a step  139  is sent to trigger the triac T 1  , T 2 , T 3 , or T 4  of the assigned power socket S 1 , S 2 , S 3 , or S 4 . The pre-determined information is store in an Output Socket Index. After firing, the current process continues by decrementing the Pulse Position Counter of the next Modulation Subroutine Module. If a Pulse Position Counter of the MSR 1    117  is not zero in the step  132 , the Pulse Position Counter of the next Modulation Subroutine Module is also decremented. This process is continued for all three remaining Modulation Subroutine Modules. Hence, the ISR  130  goes though a similar sequence of Pulse Position Counter decrement in a step  133 , zero checking in a step  134  and triac firing in a step  140  in relation to the next Modulation Subroutine Module. The ISR  130  undergoes another similar sequence of steps  135 ,  136 ,  141  for the next Modulation Subroutine Module, and a further similar sequence of steps  137 ,  138 ,  142  for the last Modulation Subroutine Module. Following which, the current process exits in a step  143  and the micro-controller U 1  restores the previous program state and continue running from that point onwards. 
     With reference to FIG. 10, the looping process  103  enters the Modulation Subroutine Module in a process  144 , the main purpose of which is to calculate the value for the firing of a pulse signal  1 ,  2 ,  3 , or  4  that triggers a triac T 1  , T 2 , T 3 , or T 4 . The calculated value is called Pulse Position. Since the Modulation Subroutine Module is executed at every zero crossing point of each A/C cycle, the Pulse Position value may be updated on every execution. This is, however, subject to a Ramp Rate value, which is a preloaded parameter used in the current process. If the Ramp Rate value is ‘1’, the updating is done on every execution. If the Ramp Rate value is ‘N’, then out of every N executions, only one update is done. 
     The current process in the step  145  checks if the Pulse Position value is due for update. If not, the current process exits in a step  155 . If update is due, the looping process  103  enters a process  146  and checks from a Ramp Value, which is a parameter used in the current process, whether the channel is on a ramp up cycle or ramp down cycle in a step  147 . 
     When the current process detects that the channel is on a ramp up cycle, the looping process  103  enters a process  151  and performs ramp up operation in a step  152  by reducing the Pulse Position value by an amount specified in the Ramp Value. The current process then checks the Pulse Position value for the maximum brightness value in a step  153 . If maximum brightness is not reached, the current process exits in the step  155 . If maximum brightness is reached, the channel is reset to ramp down cycle in a step  154  and the looping process  103  returns to a step  148  to perform ramp down operations. 
     When the current process detects that the Modulation Subroutine Module is on a ramp down cycle in the step  147 , the current process performs the ramp down operations in the step  148  by increasing the Pulse Position by the amount specified in the Ramp Value. The current process then checks the Pulse Position value for the minimum brightness value. If minimum brightness is not reached, the current process exits in the step  155 . If minimum brightness is reached or surpassed, the Pulse Position value is reset to the minimum value in a step  150  to prevent an overflow condition and the current process exits in the step  155 . 
     In the foregoing manner, a lighting controller is described according to embodiments of the invention for providing a wide variety of lighting displays characterised by synchronous and continuous modulated brightness of strings of lighting elements. Although only a number of embodiments are disclosed, it will be apparent to one skilled in the art in view of this disclosure that numerous changes and/or modifications can be made without departing from the scope and spirit of the invention.