Hallo,
Sitze grade vor einem unverständlichen Problem:
Von 4 Double-Variablen soll die kleinste gefunden werden.
Wenn die andrern Varaiblen um > 0,2 größer sind soll eine Aktion
ausgeführt werden.
Es kommt jedoch überall # raus.
-->Dass sollte eigentlich garnicht möglich sein.
Seht ihr den Fehler?
Edi R. schrieb:> Was mir aufgefallen ist: spg1 bis spg4 sollen double-Variablen sein,> aber spg_klein ist ein uint8_t.
Stimmt Danke.
Doch nun wird die größte als kleinste erkannt!
Alle kleineren haben ein '#'
Matze schrieb:> Doch nun wird die größte als kleinste erkannt!> Alle kleineren haben ein '#'
beschreib doch mal den Fehler:
welche Werte haben die Spannungen und was wird ausgegeben und was ist an
der Ausgabe falsch
Es geht um ein Balancing-System, dabei soll die höchste Spannung nur
0,2V größer als die anderen sein.
-->Im Bedarfsfall wird ein Parallelwiderstand geschaltet.
-->Dann soll dies durch ein '#' auf dem Display angezeigt werden.
Spg 1 = 7,88V
Spg 2 = 6,36V
Spg 3 = 6,52V
Spg 4 = 6,11V
Aktuell werden alle Spannungen außer Spg 1 mit '#' angezeigt und
entladen.
Habe die Spannungen nun in ein Array gepackt, doch am Problem ändert
sich nichts.
Matze schrieb:> Es geht um ein Balancing-System, dabei soll die höchste Spannung nur> 0,2V größer als die anderen sein.
und warum suchst du dann nach der kleinsten Spannung?
Loddar schrieb:> Matze schrieb:>> Es geht um ein Balancing-System, dabei soll die höchste Spannung nur>> 0,2V größer als die anderen sein.>> und warum suchst du dann nach der kleinsten Spannung?
Hab's falsch formuliert,
Es soll die kleinste Spannung ermittelt werden.
Alle anderen Spannungen sollen so geregent werden, dass sie maximal 0,2V
größer sind.
Matze schrieb:> if (spg[0]>(spg_klein+0.2))> {> zeile1[6]='#';> balance(0,1);> }> else> {> zeile1[6]=' ';> balance(0,0);> }
ändere das doch Mal in
if ( spg[0]==spg_klein )
zeile1[6]='#';
else
zeile1[6]=' ';
usw.
um zu kontrollieren was als kleinste Spannung gefunden wird,
Programmieren besteht zu einem großen Teil in systematischer Fehlersuche
...