A matrix light emitting diode, LED, system comprising: a first LED controller (200, 701) configured to implement a polynomial calculator to calculate a sequence of light intensity values and adapted to be connected to a first matrix of LEDs, the first LED controller (200, 701) characterized by: M input pins configured to receive 2 M start code values, where M is a integer ≥ 1 a programmable local memory configured to store a set of curve profiles, wherein each curve profile stores a different set of coefficient values, and each curve profile is associated with a different start code value of said 2 M start code values wherein the programmable local memory comprises two or more pins, for coupling to a serial interface, wherein the two or more pins are used to write a number of curve profiles to the programmable local memory; a processor coupled to the at least one input pin and the programmable local memory, the processor configured to: in response to receipt of a first start code value of said 2 M start code values: initialize a set of coefficients of the polynomial calculator with a set of coefficient values defined in a selected curve profile associated with the first start code value that is retrieved from the programmable local memory, wherein the set of coefficient values represents a desired light output curve, calculate light intensity values based on the selected curve profile; and output a set of voltage levels based on the calculated light intensity value output by the polynomial calculator; and a set of pulse width modulation, PWM, generators (PWM 1 - PWM N) configured to output a set of PWM signals based on the set of voltage levels corresponding to the calculated light intensity value, wherein each PWM signal controls light output of a respective LED (LED 1 - LED N) of the first matrix of LEDs. M input pins configured to receive 2 M start code values, where M is a integer ≥ 1 a programmable local memory configured to store a set of curve profiles, wherein each curve profile stores a different set of coefficient values, and each curve profile is associated with a different start code value of said 2 M start code values wherein the programmable local memory comprises two or more pins, for coupling to a serial interface, wherein the two or more pins are used to write a number of curve profiles to the programmable local memory; a processor coupled to the at least one input pin and the programmable local memory, the processor configured to: in response to receipt of a first start code value of said 2 M start code values: initialize a set of coefficients of the polynomial calculator with a set of coefficient values defined in a selected curve profile associated with the first start code value that is retrieved from the programmable local memory, wherein the set of coefficient values represents a desired light output curve, calculate light intensity values based on the selected curve profile; and output a set of voltage levels based on the calculated light intensity value output by the polynomial calculator; and in response to receipt of a first start code value of said 2 M start code values: initialize a set of coefficients of the polynomial calculator with a set of coefficient values defined in a selected curve profile associated with the first start code value that is retrieved from the programmable local memory, wherein the set of coefficient values represents a desired light output curve, calculate light intensity values based on the selected curve profile; and output a set of voltage levels based on the calculated light intensity value output by the polynomial calculator; and a set of pulse width modulation, PWM, generators (PWM 1 - PWM N) configured to output a set of PWM signals based on the set of voltage levels corresponding to the calculated light intensity value, wherein each PWM signal controls light output of a respective LED (LED 1 - LED N) of the first matrix of LEDs.