wie mache ich aus einer 1 eine 001?

vor 20 weeks 6 hours von kammi2001

Hallo zusammen!

Entschuldigt bitte den doofen Titel, mir ist aber leider keine passende Formulierung fuer meine Frage eingefallen.

Zu meinem Problem: Ich moechte einen Wert auslesen und per Serial.print verschicken. Diese Zahl soll genau 3 Stellen haben, und kann gerne auch als String verschickt werden.
Wenn also beispielsweise der Wert 15 gelesen wird soll der string 015 verschickt werden.

Gibt es da einen einfachen Befehl oder muss ich was basteln?

Zweck ist es, immer die gleiche Laenge des strings zu gewaehrleisten, weil ich mehrere Zahlen aneinaderreihen moechte und dann auch wissen muss wo im string welcher Wert zu finden ist. Aus den Werten 10, 20 und 30 soll also mal der string 010020030 enstehen.

Mit Suchmaschinen komme ich nicht zu ner Loesung, mir Ausprobieren auch nicht.
Koennt ihr mir helfen?

Ähnliche Posts

3 Antworten auf “wie mache ich aus einer 1 eine 001?”


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
  1. Uwe5802 sagt:

    Hallo kammi2001,

    ich habe mal folgendes kleines Programm geschrieben:
    // Testprogramm
    int zaehler = 0;
    String text;

    void setup()
    {
    // Serielle Schnitstelle
    Serial.begin(9600);
    }

    void loop()
    {
    zaehler = zaehler +1;
    text = String(zaehler,DEC); // Variable zaehler vom Typ Deszimal wird in String
    // umgewandelt
    text = String("00"+text); // zwei Nullen davor setzen
    Serial.print(text); // String ausgeben
    delay(1000);
    }

    wenn ich Dich richtig verstanden habe sollte das so laufen.

    Wenn Du aber die Daten der Seriellen Schnittstelle wieder auseinander nehmen willst,
    ist es besser zwischen jeden Wert ein Trennzeichen einzufüge (*, # ,~ oder so ).
    Beim Empfang kann man das bessere auseinanderhalten.
    Hier noch ein zwei Links zum studieren:
    http://arduino.cc/en/Reference/StringObject

    MfG Uwe5802

    Login or register to post comments

  1. uwe sagt:

    Serial.print(printf(%03d,variable));
    habs nicht ausprobiert daher nicht 100% sicher richtig.
    Grüße Uwe
    PS ups, noch ein Uwe

    EDIT; mich beschleicht immer mehr die Befürchtung, daß es nicht so einfach geht. printf() formatiert die Ausgabe, aber ich weiß nciht wie diese auf die serielle Schnittstelle zu bekommen. Werde morgen weitrsehen.

    Login or register to post comments

  1. chrimbo sagt:

    Ich denke auch, dass es mit printf geht, kostet aber viel speicher.
    Aber kannst es ja auch selber programmieren, so quick n' dirty.
    Müsste so tun, kompilieren tut es jedenfalls fehlerfrei

    void ausgabe(int zahl, unsigned int stellen)
    {
    	if(zahl<0)
    	{
    		Serial.print("-");
    		zahl *= -1;
    	}
    	unsigned int temp = 1;
    	int i;
    	/*
    	 * Für eine Stelle soll temp = 10 sein
    	 * für zwei Stellen soll temp = 100 sein
    	 */
    	for(i=1; i<stellen; i++)
    		temp *= 10;
    	while(temp>zahl)
    	{
    		Serial.print("0");
    		temp /= 10;
    	}
    	Serial.print(zahl);
     
    }
     
    Beispiel: zahl = 12, stellen = 4
    -> for schleife
    i		temp
    1		10
    2		100
    3		1000
    4 : Bedingung nichtmehr erfüllt
     
    -> while schleife
    temp	zahl	Vergleich	Ausgabe(verkettet)
    1000	12		wahr		0
    100		12		wahr		00
    10		12		falsch - schleife wird abgebrochen
    							0012

    Login or register to post comments