int Umwandlung

OP #2811218
Lesenswert?
• ▲
▼
Hallo Leute,

ich bin am verzweifeln.

Ich lese mit einem µC int Werte ein. Ein int Wert entspricht einer 
bestimmten Zeit.

Also konkret:

0 entspricht 0.0s
1 entspricht 0.1s
2 entspricht 0.2s usw.

Wie kann ich die int Werte jetzt entsprechend umwandeln, so dass ich sie 
am Ende als char ausgeben kann? Die Ausgabefunktion verlangt als 
Datentyp char.

Vielen Dank für die super Hilfe hier!

Viele Grüße,
Lesenswert?
• ▲
▼
Christoph A. schrieb:
> Hallo Leute,
>
> ich bin am verzweifeln.
>
> Ich lese mit einem µC int Werte ein. Ein int Wert entspricht einer
> bestimmten Zeit.
>
> Also konkret:
>
> 0 entspricht 0.0s
> 1 entspricht 0.1s
> 2 entspricht 0.2s usw.
>
> Wie kann ich die int Werte jetzt entsprechend umwandeln, so dass ich sie
> am Ende als char ausgeben kann?

itoa würde zb gehen.

> Die Ausgabefunktion verlangt als
> Datentyp char.

Du wirst schon erst mal eine Ausgabefunktion brauchen, die Strings 
ausgeben kann.

http://www.mikrocontroller.net/articles/FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben.3F
Lesenswert?
• ▲
▼
Christoph A. schrieb:
> Karl Heinz Buchegger schrieb:
>> Du wirst schon erst mal eine Ausgabefunktion brauchen, die Strings
>> ausgeben kann.
>
> Ok, ich habe gerade nachgesehen. Ein String kann ich auch eingeben. Z.B.
> "test". Das wird aber als char eingelesen

Nö. Nicht als char. Als String.

> und in er Funktion dann in
> einen String umgewandelt. Nur wie bekomme ich jetzt 0.5 in die "__"
> Anführungszeichen?

?
Was jetzt.

Trennen wir erst mal die Dinge.
Eingabe
Ausgabe

Bei welchem Problem stehst du?
Lesenswert?
• ▲
▼
Christoph A. schrieb:
> Nur wie bekomme ich jetzt 0.5 in die "__"
> Anführungszeichen?

Mit der Funktion itoa für int bzw. utoa für unsigned int. Steht doch im 
oben geposteten Link.

Vorher musst Du Deinen Wert natürlich in Vorkomma- und Nachkommastellen 
zerlegen. Das ist aber Mathematik und hat eigentlich nichts mit C zu 
tun.

Dann musst Du Deine Ausgaberoutine 3mal aufrufen. Zuerst die 
Vorkommastellen ausgeben, dann das Dezimaltrennzeichen und dann die 
Nachkommastellen.
OP
Lesenswert?
• ▲
▼
Also das ist die Funktion bzw. der Funktionsaufruf:

void LCD_Print(const  char* Text, unsigned char X, unsigned char Y, 
unsigned char FontNr, unsigned char XScale, unsigned char YScale, 
unsigned int ForeColor, unsigned int BackColor)
{...};

Ich hatte gehofft pro Wert (zb 0.3) die Funktion nur einmal aufrufen zu 
müssen.

Karl Heinz Buchegger schrieb:
> Was jetzt.
>
> Trennen wir erst mal die Dinge.
> Eingabe
> Ausgabe
>
> Bei welchem Problem stehst du?

Das Problem habe ich doch oben beschrieben. Ich bekomme in den µC 
unsigned int Werte (0, 1, 2, 3, ... , ). Jeder dieser Werte entspricht 
eine Zeiteinheit in 0.1s Schritten. Also:

0 -> 0
1 -> 0.1
2 -> 0.2
.
.
. usw.

Nun habe ich versucht einfach per Definition jedem int Wert einen 
entsprechenden String "0.3" zuzuweisen. Hat irgendwie nicht geklappt.

Dann wollte ich einfach den eingelesenen Wert erst in eine 
Gleitkommazahl umwandeln und diese dann durch 10 teilen. Den neuen Wert 
dann ausgeben. Aber wie?
Gast
Lesenswert?
• ▲
▼
>Dann wollte ich einfach den eingelesenen Wert erst in eine
>Gleitkommazahl umwandeln und diese dann durch 10 teilen. Den neuen Wert
>dann ausgeben. Aber wie?

printf("Wert: %d.%d\n", wert/10, wert%10);
Gast
Lesenswert?
• ▲
▼
>>Dann wollte ich einfach den eingelesenen Wert erst in eine
>>Gleitkommazahl umwandeln und diese dann durch 10 teilen. Den neuen Wert
>>dann ausgeben. Aber wie?
>
>printf("Wert: %d.%d\n", wert/10, wert%10);

Ach Blödsinn du hast da ne andere Ausgabe:

char buffer[9];
snprintf(buffer, sizeof(buffer), "%d.%d\n", wert/10, wert%10);
LCD_Print(buffer,...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.