Supportnet / Forum / Anwendungen(Java,C++...)
Problem in C - runden?
Frage
Hallo!
Ich hab hier eine Formel in C:
[code]
uint16_t potiwert;
potiwert = ReadChannel(1);
potiwert = (potiwert / 8);
[/code]
Es wird damit der Wert eines Potis an einem AVR-µC abgefragt und umgerechnet.
Der Controller hat eine Auflösung von 1024. Der Poti soll einen Wert zwischen 0 und 127 regeln. Also habe ich gerechnet:
[i]1024 / 127[/i]
= 8,062....
Jetzt rechnet der Controller also:
Ausgelesener Wert des Potis (irgendwas zwischen 0 und 1024) geteilt durch 8.
Problem: Irgendwie kommt bei mir am PC (ich nutze MIDI um die Signale des Controllers zu empfangen) nichts an und ich vermute, dass der Controller irgendetwas schräges mit Kommastellen sendet, was MIDI nicht versteht.
Gibt es eine Routine, mit der man die Formel eventuell genauer berechnen kann und die am Ende die Zahl auf eine glatte Zahl zwischen 0 und 127 bringt?
THX
Antwort 1 von Supermax
Da du die Variable "potiwert" als uint definiert hast, kann sie gar keine Nachkommastellen aufnehmen.
Am besten hol dir mal Sysinternals "PortMon" oder ein entsprechendes Programm für die MIDI-Schnittstelle, um zu sehen, welche Daten gesendet bzw. empfangen werden.
Am besten hol dir mal Sysinternals "PortMon" oder ein entsprechendes Programm für die MIDI-Schnittstelle, um zu sehen, welche Daten gesendet bzw. empfangen werden.

