This one is driven by the knob rotation, so you animate the knob and the lights are good.

Let's assume you are looking at your knob from top view.

For convenience, you model a led and you parent led and knob to an empty. Knob must have first rotation applied and rotation mode must be set to xyz euler, if you set it in quaternion or axis angle it will lit only on 180°. Add a material to the led, a simple diffuse one, it will be modified later.
Then you switch to 3D cursor pivot mode and you snap the cursor to the center of your knob.
The idea is to duplicate linked the led, then rotate to a determined amount around the 3D cursor, then add a custom property or as I have done here, use the pass index in the object tab and increment it for each duplicata.
I am not a great coder, you will find the script (poor one) I did in the blend file.
import bpy
from math import radians
# range covered (in degrees)
rangecovering = 270
# number of leds
leds = 20
##############################"
# step calculated
steprad = radians(rangecovering/leds)
#the override comes from http://blender.stackexchange.com/questions/6969/rotate-object-around-cursor-with-python
def get_override(area_type, region_type):
for area in bpy.context.screen.areas:
if area.type == area_type:
for region in area.regions:
if region.type == region_type:
override = {'area': area, 'region': region}
return override
#error message if the area or region wasn't found
raise RuntimeError("Wasn't able to find", region_type," in area ", area_type,
"\n Make sure it's open while executing script.")
#we need to override the context of our operator
override = get_override( 'VIEW_3D', 'WINDOW' )
for N in range(0,leds) :
# do a duplicate link
bpy.ops.object.duplicate_move_linked(OBJECT_OT_duplicate={"linked":True, "mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0, 0)})
# rotation of the duplicate
bpy.ops.transform.rotate(override, value=steprad, axis=(-0, -0, -1), constraint_axis=(False, False, False), constraint_orientation='GLOBAL')
# change pass index obj
bpy.context.object.pass_index = N+1
You just have to change the range in degree, the number of leds you want, and it will create the strip with the correct number of leds around the 3D cursor. If you want to change the shape of the leds (in edit mode), you can and they will be all modified at the same time as they are linked duplicate. You can also modify the mesh data of one led and link the object data to the others quickly.
Then you create a material with a value driven by the rotation of the knob

When you create the driver, use the name var in Scripted Expression, and local z axis in order to rotate the whole thing using the empty without breaking the driver.

I chose to keep the default driver curve and to manage the values directly in the material, so you have a few parameters to adjust to make it work there : range of strip leds, and number of leds as in the script.
If you want to rotate the knob, use the empty so that you will be able to center it at your taste.
If you use the same led material for the knob, and you put an indexpass = 0 it will light up at the same time than the first led.
