¿Cómo convierto un int, n
en una cadena para que cuando lo envíe a través de la serie, se envíe como una cadena?
Esto es lo que tengo hasta ahora:
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++;
}
Respuestas:
Use así:
Puedes encontrar más ejemplos aquí .
fuente
utilizar la
itoa()
función incluida enstdlib.h
fuente
Simplemente puede hacer:
que se convertirá
n
en una cadena ASCII automáticamente. Consulte la documentación deSerial.println()
.fuente
Solo necesita envolverlo alrededor de un objeto String como este:
También puedes hacer:
fuente
Esta es una solución de velocidad optimizada para convertir int (entero de 16 bits con signo) en una cadena.
Esta implementación evita el uso de la división, ya que el AVR de 8 bits utilizado para Arduino no tiene instrucción DIV de hardware, el compilador traduce la división en sustracciones repetitivas que consumen mucho tiempo. Por lo tanto, la solución más rápida es usar ramas condicionales para construir la cadena.
Un búfer fijo de 7 bytes preparado desde el principio en RAM para evitar la asignación dinámica. Dado que solo tiene 7 bytes, el costo del uso de RAM fija se considera mínimo. Para ayudar al compilador, agregamos un modificador de registro en la declaración de variable para acelerar la ejecución.
Este boceto se compila en 1.082 bytes de código utilizando avr-gcc que se incluye con Arduino v1.0.5 (el tamaño de la función int2str en sí es de 594 bytes). En comparación con la solución que usa un objeto String que se compiló en 2,398 bytes, esta implementación puede reducir el tamaño de su código en 1.2 Kb (asumiendo que no necesita otro método de objeto String, y su número es estricto para el tipo int firmado).
Esta función se puede optimizar aún más escribiéndola en el código ensamblador adecuado.
fuente
La solución es demasiado grande. Prueba este sencillo. Proporcione un búfer de más de 7 caracteres, sin verificación.
Se puede modificar fácilmente para devolver el final del búfer, si descarta el índice 'l' e incrementa el búfer directamente.
fuente
para obtener más información, puede visitar el sitio de arduino https://www.arduino.cc/en/Serial/Println
Deseo que esto te ayude. ¡Gracias!
fuente
A continuación se muestra un myitoa () compuesto por uno mismo que es mucho más pequeño en código y reserva una matriz FIJA de 7 (incluida la terminación 0) en char * mystring, que a menudo es deseable. Es obvio que se puede construir el código con carácter-shift en su lugar, si se necesita una cadena de salida de longitud variable.
fuente
Esto simplemente funciona para mí:
fuente