ich komme mit meinem beschränken C-Wissen nicht weiter
Ich brauche eine Umkehrfunktion die den Wert aus "analogRead" invertiert in "analogWrite" ausgibt.
Beispiel:
ist der Eingabewert/4 = 0 soll der Ausgabewert = 255 sein
ist der Eingabewert/4 = 255 soll der Ausgabewert = 0 sein
ist der Eingabewert/4 = 100 soll der Ausgabewert = 155 sein
ist der Eingabewert/4 = 160 soll der Ausgabewert = 95 sein
...
mein Ansatz war den Eingabewert/4 von 255 abzuziehen und als Ausgabewert zu nehmen, das bekomme ich nur nicht auf die Reihe. :~
Vielen Dank! Mir fehlt leider noch die Logik beim Programmieren ich denke zu kompliziert bzw. stelle mir die Lösung zu komplex vor. Gibt es eventuell noch eine besser Variante als die Werte zu subtrahieren?
Was verstehst Du unter "besser"? Soll heißen, wenn Du willst kannst Du das auch mit "Map" http://www.arduino.cc/en/Reference/Map erledigen. Ob das besser ist kann man sehen wie man will.
Mit besser meine ich effizienter. Aber map scheint ja quasi dasselbe nur anders zu machen, indem es 1023 auf 255 runterbricht. Vielen Dank auch für den Hinweis an dieser Stelle
Dennis: Du bist ja ein Scherzkeks. Du hast ja nach anderen Lösungen für das gleiche Problem gefragt. Alle Lösungen werden diese Ergebnis erreichen sonst sind sie keine Lösungen. Ich frage mich immer noch was Du mit "besser" meinst.
Was Rudi sagt ist außerdem auch wichtig. Erst muß ein Programm funktionieren. Erst dann wird optimiert (falls das überhaupt nötig ist).
Ihr habt ja beide Recht, aber hätte ich nicht gefragt, wüsste ich jetzt nicht, dass es eine "map"-Funktion gibt und wofür ich sie benutzen kann Ich frage nach Alternativlösungen, weil sie unter Umständen auch andere Herangehensweisen aufzeigen oder mir, wie in diesem Beispiel, neue Funktionen zeigen
hmm soweit ich es in der Reference verstanden habe, verschiebt die Bitshift left/right Anweisung die Position der Bits um einen definierten Wert. Keine Ahnung wozu das gut sein soll
Udo, Dir gefallen die Schiebeoperationen.
Um die Zahl von 255 wegzuzählen könntest Du auch das 2 Kompliment machen?
laemmen:
1 bit nach rechts verschieben entspricht einem Teilen durch 2.
Ein Verschieben um 1 bit nach links um ein Multipliziern mit 2.
2 Bit verschieben sind dann eine Multiplication/Teilung durch 4.