stats

Rekenen

Met een rotary (digitaal) of een potmeter (analoog) kun je een variabele verhogen en/of verlagen. Wanneer voor meerdere toepassingen met dezelfde 'regelaar' verschillende maximale waarden mogelijk zijn, moet er voor elk van die toepassingen een daarbij passende waarde worden opgeteld of afgetrokken.

Zo'n factor kan bepaald worden door de maximale waarde te delen door het aantal mogelijke stappen. (bv. 0-100%) Maar wat te doen wanneer er een waarde achter de komma ontstaat? Afronden? Op zich is dat correct, maar rekenen met komma's is zwaar voor een eenvoudige CPU!

Een alternatief is rekenen zonder komma....

fact = (max * 256) / 100     dus:     valu = q * fact) / 256

Voorwaarde is wel dat een van de variabelen van een type moet zijn waar de uitkomst in past! Dus: word * byte = long. In mijn geval de variabele q, omdat deze maar een maal aanwezig is, tegen 3 maal in de array Stap.

In het voorbeeld hierboven zijn er drie rotary knopen welke per stuk een functie krijgen uit drie pulldown menu's van tig functies.

NOOT: Met de functie SetBasics() wordt eenmalig de actuele factor-waarden uit progmem opgehaald.

HOME