hallo zusammen, versuch schon seit einem tag eine ausgabe auf das Edip240 hin zu bekommen. Hab einen LM75 der über I2C ausgelesen wird und dann auf das MyAVRLCD ausgegeben -> wird funktioniert einwandfrei. Jetzt zu meinem Problem: (bin noch Anfänger) Ich möchte gerne das erste Byte aufteilen damit ich zwei hex Stellen haben z bsp. für 21°C (0x32)+(0x31) schaff es aber einfach nicht. Oder mach ich das hier komplett falsch. bzw gibt es einen einfacheren weg. Wenn ich aber einen Fixwert sende (0x34) schreibt er mir auch das richtige hin in dem fall 4. Der Anhang ist halt recht ein saustall aber für tips sollte er reichen... Vielleicht kann mir von euch jemand ein paar tips geben. danke im Voraus schon mal
Scary schrieb: > Jetzt zu meinem Problem: (bin noch Anfänger) > Ich möchte gerne das erste Byte aufteilen damit ich zwei hex Stellen > haben z bsp. für 21°C (0x32)+(0x31) schaff es aber einfach nicht. 21 dividiert durch 10 ergibt 2 21 modulo 10 (der Rest der Division) ergibt 1 Warum? weil 2 * 10 + 1 wieder die 21 ergibt. 74 / 10 ergibt 7 74 % 10 ergibt 4 warum? weil 7 * 10 + 4 wieder die 74 ergeben Dein Byte1, welches du zum LCD schickst und das dir die erste Ziffer einer 2-stelligen Zahl anzeigt, hat also den Wert byte1 = ( wert / 10 ) + '0'; dein Byte2, welches dann den ASCII Code für die Einerstelle realisiert, hat also den Wert byte2 = ( wert % 10 ) + '0';
Scary schrieb: > Der Anhang ist halt recht ein saustall Das ist eines der Probleme. Mach dir erst mal eine Funktion, die dir einen String ausgibt. Denn das hier bcc = 0x11 + 0x0B + 0x1B + 'Z' + 'F' + '5' + 0x1B + 'Z' + 'L' + 0x41 + 0x0B + berechnung + 0x00 ; kannst du in der Pfeife rauchen. Wenn die Prüfsumme stimmen soll, dann musst da da auch die Dinge berücksichtigen, die du tatsächlich schickst. Und das blödeste, was du tun kannst, ist da jetzt irgendwelche Dinge anzunehmen. Also eine Funktion, die einen String verschickt und dabei die korrekte Prüfsumme für diesen String berechnet. Und dann baust du dir eine Funktion, die dir den zu sendenden String anhand der Zahl zusammenbaut. Hast du den String, dann benutzt du die Stringausgabefunktion um ihn zum LCD zu schicken. So wie du das jetzt machst, machst du dir eine Menge Arbeit für nichts. void lcdString( const char* txt ) { ... }
erstmal danke danke danke karl heinz. funktioniert!!!! die lösung wär so einfach wenn man sie weis... hab aber trotzdem noch ein paar fragen. das mit dem string ist klar . zur zeit bin ich nur in der probefase da ich das projekt sowieso noch weitgehend überdenken muss. mir geht es zur zeit nur mal darum das zu verstehen was ich da mach. und deswegen hab ich diese wurst so geschrieben. (war schon froh überhaupt einen übertragung geschafft zu haben ) und da nochmal zum ersten. 74 / 10 = 7 soweit klar aber 74 % 10 = 4 verstehe ich leider noch nicht ganz wird da nur die erste zahl verwendet oder wie und wie wär dass dann bei einer 3stelligen zahl angenommen 742 ??? vielleicht könnten sie mir dass nochmal ein bischen erklären. danke im voraus scary
Modulo = Der Rest der Division (nicht der Bruchteil hinter dem Komma!) Beispiel (aus Wikipedia geklaut): 7:3 = 2, Rest 1, da 7 = 3×2 + 1 („drei passt zweimal in 7 und es bleibt eins übrig“ – der Rest ist also eins) 2:3 = 0, Rest 2, da 2 = 3×0 + 2 3:3 = 1, Rest 0, da 3 = 3×1 + 0 Deine Frage: 742 % 10 = 2 743 % 10 = 3 744 % 10 = 4 745 % 10 = 5 etc Du siehst: Der Modulo-Rest hat nichts mit der Anzahl de Stellen zu tun
ok jetzt hab ich es kapiert. Danke nochmal auf mikrocontroller.net ist einfach immer verlass
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.