hi @all, ich stelle mich gerade etwas an ich lese spannungen 0-16V ein die will ich auf einem display als gauge anzeigen, gauge geht von 0-180° also hab ich mal folgendes gemacht int v = int(adc_in*10); int g = map(v, 0, 160, 0, 180); da kommt bei 12V was v=120 entspricht aber g=135 raus, g sollte aber 90 sein 0V = 0° 10V = 45° 12V = 90° 14V = 135° 16V = 180° ich stehe gerade irgendwie aif dem schlauch, wo ist hier mein denkfehler ???
Thomas W. schrieb: > 0 bis 10V sind 45° > 10 bis 12V sind 45° > > Irgendwie nichtlinear ohh mann, ich bin ein depp ... danke für den hammerschlag ...
Gibt's dazu auch eine Programmiersprache? Und wo kommt diese ominöse Funktion "map()" her?
Mal vorausgesetzt, der Zusammenhang stellt sich als linear heraus, würde ich den guten alten Dreisatz empfehlen. Map-Funktion! Ts ts ts. :-)
Rolf M. schrieb: > Gibt's dazu auch eine Programmiersprache? Und wo kommt diese ominöse > Funktion "map()" her? Gehilfe für Marathonläufer. Frequenzzähler für Leute mit absolutem Gehör. Glatzenpolitur für Haarmodells. Irgend sowas. :-)
Meine Bemerkungen halte ich jetzt für überflüssig und vor allem unangemessen. Ich bitte um Entschuldigung.
Wenn es Integer sein sollen: g = (v * 45) / 4; Wenn man die vorherige Multiplikation mit 10 noch einarbeitet: g = (v10 * 225) / 2; Warum da überhaupt auf die Idee mit einer map()-Funktion kommt verstehe ich nicht.
1 | long map(long x, long in_min, long in_max, long out_min, long out_max) |
2 | {
|
3 | return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; |
4 | }
|
https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/WMath.cpp Zeile 52
Wow. Das is eines der schlimmsten Beispiele für falsche Namensgebung das ich je gesehn hab... Die Funktion müsste eigentlich lerp heißen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.