Om de afwijking ten opzichte van de zwarte lijn te meten, maken we gebruik van een parabolische interpolatie. Dit doen we softwarematig en gaat als volgt:
De sensoren worden uitgelezen en de waarden worden in een array geplaatst. Dan zoeken we de hoogste waarde van onze array, alsook de index van de sensor met de hoogste waarde. Als we weten welke sensor de hoogste waarde heeft, en dus het meest zwart is, kunnen we beginnen aan de interpolatie.
Een parabool heeft volgende functie: y = ax² + bx + c.
De sensor met de hoogste waarde heeft x-waarde 0. De sensor links daarvan heeft als x-waarde -1 en de sensor rechts daarvan heeft als x-waarde +1. De y-waarden zijn de uitgelezen waarden van de sensoren.
Dit geeft ons 3 vergelijkingen:
Y1 = ax² - bx + c (linkse sensor)
Y2 = c (middenste sensor)
Y3 = ax² + bx + c (rechtse sensor)
Nu kunnen we op zoek gaan naar a, b en c.
Uit de eerste vergelijking halen we: b = Y1
a Y2.
Vullen we dat in de derde vergelijking in, krijgen we: a = (Y3 - 2*Y2 + Y1) / 2.
Nu we alle waarden van de vergelijking kennen, kunnen we de top van de parabool berekenen. Dit doen we door de afgeleide van de functie gelijk te stellen aan 0.
Afgeleide: y' = 2ax + b.
Hieruit halen we de x-waarde als y' = 0 => x = -b / (2*a).
Dit is onze top zonder rekening te houden met de index van de sensor. Daarom moeten we 2.5 bijtellen bij onze top en de maximale sensorindex aftrekken van de top. (Omdat we 6 sensoren hebben en dus een index van 0 tot 5, gemiddeld 2.5) Zo zal onze top 0 zijn als de sensoren met index 2 en 3 gelijk zijn.