RaceCapturePro2 ShiftLights
Sequential Shift light
One way to enable shift light is by using the PWM / Analog output channels to trigger a 3 + 1 shift light output. In this case, we used 3 of the outputs to control the 3 LED segments on the ShiftX Sequential Shift Light display, and the 4th output controls a focused Red LED that flashes at the top end of the RPM range.
- Example Video:
Script
Requirements
- A working RPM signal connected to the first timer input channel on RaceCapture/Pro.
- Shift light boards connected to PWM / Analog out 1 - 3; flash alert LED to the 4th output
--[[
3 stage + 1 sequential shift light
Input
Timer 0 - RPM
Tach Lights
0 - Green Light
1 - Yellow Light
2 - Red Light
3 - Flash alert
]]
-- Globals --
LIGHTS = 4
LIGHT_VALS = {}
FREQUENCY_HZ = 10
-- Global Init --
setTickRate(FREQUENCY_HZ)
function toggleLight(index)
LIGHT_VALS[index] = not LIGHT_VALS[index]
end
function lightOn(index)
LIGHT_VALS[index] = true
end
function lightOff(index)
LIGHT_VALS[index] = false
end
local lCount = 0
repeat
lightOff(lCount)
lCount = lCount + 1
until lCount >= LIGHTS
-- Script --
function updateLights()
local l = 0
repeat
-- Convert our booleans to 1 (true) or 0 (false) --
local val = LIGHT_VALS[l]
local dc = 0
if not val then
dc = 100
end
setPwmDutyCycle(l, dc)
l = l + 1
until l >= LIGHTS
end
function checkRpm()
local rpm = getTimerRpm(0)
if rpm < 3000 then
lightOff(0)
lightOff(1)
lightOff(2)
lightOff(3)
elseif 3000 < rpm and rpm < 4500 then
lightOn(0)
lightOff(1)
lightOff(2)
lightOff(3)
elseif 4500 < rpm and rpm < 5000 then
lightOn(0)
lightOn(1)
lightOff(2)
lightOff(3)
elseif 5000 < rpm and rpm < 5500 then
lightOn(0)
lightOn(1)
lightOn(2)
lightOff(3)
else
toggleLight(3)
end
end
function controlLights()
checkRpm()
updateLights()
end
-- Start!
function onTick()
controlLights()
end
