An dieser Stelle habe ich auch noch eine Frage,

Ich möchte meinen Steuerhebelweg pwe ADC erfassen.

Dieser geht von 0 bis 1023 (10Bit):

uint16_t way_akt;

mein Steuerhebel fährt nicht den vollen Weg des Potis, daher will ich das vom LCD aus einstellen können. Quasi eine Weg-Kalibrierung.

dabei benötigt man den minimal und den maximalwert:

uint16_t way_min;
uint16_t way_max;

mein Ausgabewert, uint8_t way_steuer; ist eine 8Bit-Variable.


Das wegbegrenzen is ja ein kinderspiel:

if(way_akt<way_min){ way_akt = way_min; }
if(way_akt>way_max){ way_akt = way_max; }

so nun zum umrechnen auf 8Bit.

dazu muss beim kalibrieren ein Multiplikationsfaktor berechnet werden:

way_factor = ( way_max - way_min ) / 255;


diesen benutzt man dann zur Umrechnung:

way_steuer = way_akt / way_factor;




Das problem ist, dass der factor mindestens eine Kommastelle benötigt, um ein genaueres ergebnis zu erzielen... da der factor zwischen 3 und 6 schwankt, macht da eine kommastelle schon sehr viel an genauigkeit aus!



Ich hoffe man versteht was ich meine, und dass ihr mir helfen könnt, da ich mit double oder float nochnie was gemacht habe.

So ist es ja kein Problem mit double oder float - Dateitypen,

aber das ergebnis soll ja ein INT sein ?