Comment puis-je convertir un int`` n
en une chaîne de sorte que lorsque je l'envoie via le numéro de série, il soit envoyé sous forme de chaîne?
Voici ce que j'ai jusqu'à présent:
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++;
}
Réponses:
Utilisez comme ceci:
Vous pouvez trouver plus d'exemples ici .
la source
utiliser la
itoa()
fonction incluse dansstdlib.h
la source
Vous pouvez simplement faire:
qui se convertira
n
automatiquement en chaîne ASCII. Consultez la documentation pourSerial.println()
.la source
Il vous suffit de l'enrouler autour d'un objet String comme celui-ci:
Vous pouvez également faire:
la source
Il s'agit d'une solution à vitesse optimisée pour convertir un entier (entier 16 bits signé) en chaîne.
Cette implémentation évite d'utiliser la division car l'AVR 8 bits utilisé pour Arduino n'a pas d'instruction DIV matérielle, le compilateur traduit la division en soustractions répétitives chronophages. Ainsi, la solution la plus rapide consiste à utiliser des branches conditionnelles pour créer la chaîne.
Un tampon fixe de 7 octets préparé depuis le début dans la RAM pour éviter une allocation dynamique. Comme il ne fait que 7 octets, le coût d'utilisation fixe de la RAM est considéré comme minimum. Pour aider le compilateur, nous ajoutons un modificateur de registre dans la déclaration de variable pour accélérer l'exécution.
Cette esquisse est compilée à 1082 octets de code en utilisant avr-gcc qui est fourni avec Arduino v1.0.5 (la taille de la fonction int2str elle-même est de 594 octets). Par rapport à la solution utilisant un objet String compilé en 2398 octets, cette implémentation peut réduire la taille de votre code de 1,2 Ko (en supposant que vous n'avez besoin d'aucune autre méthode d'objet String et que votre nombre est strict au type int signé).
Cette fonction peut être optimisée davantage en l'écrivant dans le code assembleur approprié.
la source
La solution est beaucoup trop grande. Essayez ce simple. Veuillez fournir un tampon de plus de 7 caractères, aucune vérification effectuée.
Peut être facilement modifié pour donner l'arrière-plan du tampon, si vous supprimez l'index 'l' et incrémentez le tampon directement.
la source
Voici ci-dessous un myitoa () auto composé qui est de loin plus petit dans le code, et réserve un tableau FIXED de 7 (y compris la terminaison 0) dans char * mystring, ce qui est souvent souhaitable. Il est évident que l'on peut construire le code avec un décalage de caractère à la place, si l'on a besoin d'une chaîne de sortie de longueur variable.
la source
pour plus, vous pouvez visiter le site d'arduino https://www.arduino.cc/en/Serial/Println
souhaite que cela vous aide. Merci!
la source
Cela fonctionne simplement pour moi:
la source