Wie konvertiere ich ein int ,, n
in eine Zeichenfolge, sodass es beim Senden über die Seriennummer als Zeichenfolge gesendet wird?
Das habe ich bisher:
int ledPin=13;
int testerPin=8;
int n=1;
char buf[10];
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(testerPin, OUTPUT);
Serial.begin(115200);
}
void loop()
{
digitalWrite(ledPin, HIGH);
sprintf(buf, "Hello!%d", n);
Serial.println(buf);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
n++;
}
Antworten:
Verwenden Sie wie folgt:
Weitere Beispiele finden Sie hier .
quelle
Verwenden Sie die in enthaltene
itoa()
Funktionstdlib.h
quelle
Sie können einfach tun:
n
Dies wird automatisch in eine ASCII-Zeichenfolge konvertiert . Siehe die Dokumentation fürSerial.println()
.quelle
Sie müssen es nur wie folgt um ein String-Objekt wickeln:
Sie können auch tun:
quelle
Dies ist eine geschwindigkeitsoptimierte Lösung zum Konvertieren von int (vorzeichenbehaftete 16-Bit-Ganzzahl) in Zeichenfolgen.
Diese Implementierung vermeidet die Verwendung der Division, da der für Arduino verwendete 8-Bit-AVR keinen Hardware-DIV-Befehl hat. Der Compiler übersetzt die Division in zeitaufwändige wiederholte Subtraktionen. Daher besteht die schnellste Lösung darin, bedingte Verzweigungen zum Erstellen der Zeichenfolge zu verwenden.
Ein fester 7-Byte-Puffer, der von Anfang an im RAM vorbereitet wurde, um eine dynamische Zuordnung zu vermeiden. Da es nur 7 Bytes sind, werden die Kosten für die feste RAM-Nutzung als minimal angesehen. Um den Compiler zu unterstützen, fügen wir der Variablendeklaration den Registermodifikator hinzu, um die Ausführung zu beschleunigen.
Diese Skizze wird mit avr-gcc, das mit Arduino v1.0.5 gebündelt ist, zu 1.082 Byte Code kompiliert (die Größe der int2str-Funktion selbst beträgt 594 Byte). Im Vergleich zu einer Lösung mit einem String-Objekt, das in 2.398 Byte kompiliert wurde, kann diese Implementierung Ihre Codegröße um 1,2 KB reduzieren (vorausgesetzt, Sie benötigen keine andere String-Objektmethode und Ihre Nummer ist streng nach signiertem int-Typ).
Diese Funktion kann weiter optimiert werden, indem sie in den richtigen Assembler-Code geschrieben wird.
quelle
Die Lösung ist viel zu groß. Versuchen Sie dieses einfache. Bitte geben Sie einen Puffer mit mehr als 7 Zeichen an, ohne dass eine Überprüfung durchgeführt wurde.
Kann leicht geändert werden, um das Ende des Puffers zurückzugeben, wenn Sie den Index 'l' verwerfen und den Puffer direkt erhöhen.
quelle
Hier unten ist eine selbst komponierte myitoa (), die im Code weitaus kleiner ist und ein FIXED-Array von 7 (einschließlich der Beendigung von 0) in char * mystring reserviert, was häufig wünschenswert ist. Es ist offensichtlich, dass man den Code stattdessen mit Zeichenverschiebung erstellen kann, wenn man eine Ausgabezeichenfolge variabler Länge benötigt.
quelle
Weitere Informationen finden Sie auf der Website von arduino unter https://www.arduino.cc/en/Serial/Println
Ich wünschte, das würde dir helfen. Vielen Dank!
quelle
Das funktioniert einfach bei mir:
quelle