27/03/2005
En el contexto de Arduino, la función parseInt() forma parte de la clase Stream. Esta clase es fundamental para la gestión de flujos de datos secuenciales, tanto de entrada como de salida, en el microcontrolador.

La Clase Stream en Arduino
La clase Stream es la base para la comunicación serial y otras interfaces en Arduino. Proporciona las funciones básicas para leer y escribir datos. Muchas de las librerías de comunicación, como Serial, Wire y SD, heredan de la clase Stream. Esto significa que las funciones de estas librerías, incluyendo parseInt(), se basan en la funcionalidad proporcionada por Stream.
La clase Stream define métodos esenciales para la interacción con los flujos de datos, algunos de los más importantes son:
- available(): Devuelve el número de bytes disponibles para lectura en el flujo.
- read(): Lee un byte del flujo.
- peek(): Observa el siguiente byte del flujo sin extraerlo.
- flush(): Limpia el búfer de salida.
- find(): Busca una cadena de caracteres en el flujo.
- findUntil(): Busca una cadena de caracteres en el flujo hasta encontrar un carácter delimitador.
- readBytes(): Lee una cantidad específica de bytes del flujo.
- readBytesUntil(): Lee bytes hasta un carácter delimitador.
- readString(): Lee una cadena de caracteres del flujo.
- readStringUntil(): Lee una cadena de caracteres del flujo hasta un delimitador.
- parseInt(): Convierte una secuencia de caracteres en un número entero.
- parseFloat(): Convierte una secuencia de caracteres en un número de coma flotante.
- setTimeout(): Establece un tiempo límite para la lectura de datos.
parseInt() en detalle
La función parseInt() es crucial para el análisis de datos recibidos a través de puertos seriales o otras interfaces. Su función es convertir una secuencia de caracteres que representan un número entero en un valor numérico de tipo long (entero largo). Aquí te presentamos un análisis de sus características:
Sintaxis
stream.parseInt()
Donde streames una instancia de una clase que hereda de Stream (como Serial ).
Funcionamiento
parseInt() lee caracteres del flujo de datos hasta encontrar un carácter que no sea un dígito o el signo menos (-). Ignora los espacios en blanco al principio de la secuencia. El valor entero resultante se construye a partir de los dígitos encontrados. Si no encuentra ningún dígito, devuelve 0.
Ejemplo con Serial
El siguiente código ilustra el uso de parseInt() con la librería Serial para leer un número entero enviado desde un ordenador:
void setup() { Serial.begin(9600);}void loop() { if (Serial.available() > 0) { long valor = Serial.parseInt(); Serial.print("Valor recibido: "); Serial.println(valor); }}En este ejemplo, el código espera a que haya datos disponibles en el puerto serie. Si hay datos, la función parseInt() extrae el primer número entero del flujo y lo imprime en el monitor serie. Si se envía “123 abc”, solo se lee el 12
Librerías que usan parseInt()
Como ya hemos mencionado, parseInt() se encuentra en la clase base Stream. Por lo tanto, cualquier librería que hereda de Stream tiene acceso a esta función. Algunas de las librerías más comunes que la utilizan son:
- Serial: Para la comunicación serie.
- SoftwareSerial: Para implementar comunicación serial en pines adicionales.
- EthernetClient: Para la comunicación con servidores Ethernet.
- WiFiClient: Para la comunicación con servidores WiFi.
- Client: Clase base para clientes de red.
Consideraciones importantes
- Manejo de errores: Aunque parseInt() es robusta, es importante considerar la posibilidad de que no se reciban datos válidos. Es fundamental incluir código para manejar estas situaciones, por ejemplo, verificando si el valor devuelto es 0 para indicar un error.
- Tipos de datos: Recuerda que parseInt() devuelve un long . Si necesitas un tipo de dato diferente (como int ), deberás realizar una conversión explícita.
- Rendimiento: El uso excesivo de parseInt() puede afectar el rendimiento, especialmente en aplicaciones con recursos limitados. Si es posible, considera otras formas de procesar los datos para mejorar la eficiencia.
Tabla comparativa de funciones de conversión de Stream
| Función | Tipo de dato devuelto | Descripción |
|---|---|---|
| parseInt() | long | Convierte una secuencia de caracteres a un entero largo. |
| parseFloat() | float | Convierte una secuencia de caracteres a un número de coma flotante. |
Consultas habituales
Aquí te mostramos algunas consultas habituales relacionadas con parseInt() y su uso en Arduino:
- ¿Qué ocurre si parseInt() no encuentra ningún número? Devuelve 0.
- ¿Cómo manejo los errores con parseInt()? Verifica el valor devuelto; un 0 podría indicar que no se encontró un número entero.
- ¿Puedo usar parseInt() con otras librerías además de Serial? Sí, con cualquier librería que herede de la clase Stream .
- ¿Cuál es la diferencia entre parseInt() y atof()?
atof()convierte una cadena de caracteres a un número de coma flotante (double) mientras queparseInt()convierte a un entero largo (long).
En resumen, parseInt() es una herramienta valiosa para procesar datos numéricos recibidos a través de diversos métodos de entrada en Arduino. Su pertenencia a la clase Stream la convierte en una función versátil y ampliamente aplicable en una variedad de proyectos.
Si quieres conocer otros artículos parecidos a A qué librería de arduino pertenece parseint puedes visitar la categoría Libros y Librerías.
