Librería Serial
Introducción a la Comunicación Serial
La comunicación serial es un método para transmitir datos
entre un Arduino y otros dispositivos como computadoras, sensores y
otros microcontroladores. Es fundamental para proyectos que requieren
intercambio de información. En Arduino, la librería Serial
facilita esta comunicación, permitiendo enviar y recibir datos a través del puerto serie.
Qué es la Librería Serial
La librería Serial
en Arduino es una colección
de funciones que permiten la comunicación serial entre el
microcontrolador y otros dispositivos. Esta comunicación se realiza a
través de los pines digitales 0 (RX) y 1 (TX) en la mayoría de las
placas Arduino. Mediante esta librería, los estudiantes pueden enviar
datos a la computadora para su monitoreo o recibir comandos desde la
misma.
Configuración Básica
Para comenzar a utilizar la librería serial, se debe inicializar la comunicación en el setup()
usando la función Serial.begin(baudrate);
. El parámetro baudrate
determina la velocidad de transmisión en bits por segundo (bps). Por ejemplo:
void setup() { Serial.begin(9600); // Inicializa la comunicación a 9600 bps }
Este código configura el Arduino para comunicarse a 9600 bits por segundo, una velocidad común para la mayoría de los proyectos.
Enviando Datos
Para enviar datos desde el Arduino a la computadora, se utiliza la función Serial.print()
o Serial.println()
. La diferencia es que Serial.println()
añade un salto de línea al final del dato, lo que es útil para mejorar la legibilidad en el monitor serie. Por ejemplo:
void loop() { Serial.print("Temperatura: "); Serial.println(25); // Envía "Temperatura: 25" seguido de un salto de línea delay(1000); // Espera 1 segundo }
Este código envía la palabra "Temperatura: 25" al monitor serie cada segundo.
Recibiendo Datos
Para recibir datos enviados desde la computadora al Arduino, se usa la función Serial.read()
. Primero se verifica si hay datos disponibles con Serial.available()
. Aquí un ejemplo:
void loop() { if (Serial.available() > 0) { char dato = Serial.read(); // Lee el carácter entrante Serial.print("Recibido: "); Serial.println(dato); } }
Este código lee un carácter desde el monitor serie y lo muestra en el mismo.
Parámetros de la Comunicación Serial
Los parámetros básicos de la comunicación serial incluyen la
velocidad en baudios, la paridad, los bits de datos y los bits de
parada. En la mayoría de los proyectos con Arduino, se usa una
configuración estándar de 8N1: 8 bits de datos, sin paridad (None) y 1
bit de parada. Estas configuraciones se establecen automáticamente con Serial.begin()
y no requieren cambios manuales en proyectos simples.
Ejemplo Práctico: Control de LED
Un ejemplo práctico es controlar un LED a través de comandos enviados desde el monitor serie:
void setup() { Serial.begin(9600); pinMode(LED_BUILTIN, OUTPUT); } void loop() { if (Serial.available() > 0) { char comando = Serial.read(); if (comando == 'H') { digitalWrite(LED_BUILTIN, HIGH); // Enciende el LED Serial.println("LED Encendido"); } else if (comando == 'L') { digitalWrite(LED_BUILTIN, LOW); // Apaga el LED Serial.println("LED Apagado"); } } }
En este código, enviando 'H' desde el monitor serie se enciende el LED y 'L' lo apaga.
Depuración y Monitoreo
El monitor serie es una herramienta valiosa para depurar y monitorear el comportamiento de los programas. Permite ver en tiempo real los datos que el Arduino está enviando y recibir comandos para interactuar con el programa.
Consideraciones y Buenas Prácticas
Es importante cerrar la comunicación serial correctamente al
finalizar un proyecto o cuando el Arduino no necesita enviar datos. Esto
se realiza con Serial.end();
. Además, se debe tener
cuidado con el uso intensivo de la comunicación serial en programas
complejos, ya que puede ralentizar la ejecución del código si no se
maneja adecuadamente.
Conclusión
La librería serial en Arduino es una herramienta poderosa que permite a los estudiantes interactuar y comunicarse con sus proyectos de manera efectiva. Comprender sus funciones y parámetros básicos es esencial para desarrollar habilidades en electrónica y programación, facilitando la creación de proyectos innovadores y educativos.
Cuestionario sobre librería serial
Preguntas de Selección Múltiple
¿Qué es la comunicación serial en Arduino?
- a) Un método para almacenar datos en la memoria.
- b) Un método para transmitir datos entre un Arduino y otros dispositivos.
- c) Una forma de alimentar el Arduino.
- d) Un lenguaje de programación para Arduino.
¿Qué función se utiliza para iniciar la comunicación serial en el setup()?
- a) Serial.print()
- b) Serial.read()
- c) Serial.begin()
- d) Serial.available()
¿Qué hace la función Serial.println() que la función Serial.print() no hace?
- a) Añade un salto de línea al final del dato.
- b) Inicia la comunicación serial.
- c) Termina la comunicación serial.
- d) Verifica si hay datos disponibles.
¿Qué valor se usa comúnmente como baudrate en los ejemplos de Arduino?
- a) 4800
- b) 9600
- c) 14400
- d) 19200
¿Cómo se verifica si hay datos disponibles para leer en la comunicación serial?
- a) Serial.begin()
- b) Serial.print()
- c) Serial.read()
- d) Serial.available()
Preguntas de Verdadero o Falso
La librería Serial permite la comunicación a través de los pines digitales 2 (RX) y 3 (TX) en la mayoría de las placas Arduino.
- Verdadero
- Falso
La función Serial.end() se utiliza para finalizar la comunicación serial.
- Verdadero
- Falso
El monitor serie es una herramienta útil para depurar y monitorear programas en tiempo real.
- Verdadero
- Falso
Preguntas de Respuesta Corta
¿Qué parámetros básicos se configuran automáticamente con Serial.begin()?
En el ejemplo práctico de control de LED, ¿qué comando se debe enviar desde el monitor serie para encender el LED?
Preguntas de Desarrollo
Explica la diferencia entre Serial.print() y Serial.println() y da un ejemplo de cuándo utilizarías cada una.
Describe un escenario en un proyecto de Arduino en el que la comunicación serial sería esencial y explica cómo la implementarías.
Preguntas de Relacionar
- Relaciona las funciones con su propósito:
- Serial.read() →
- Serial.print() →
- Serial.available() →
- Serial.begin() →
a) Verifica si hay datos disponibles. b) Inicia la comunicación serial. c) Envía datos sin salto de línea. d) Lee un carácter entrante.
Ejercicios:
Ejercicio 1: Control de la Intensidad del LED
Objetivo: Modificar el código para que el LED pueda cambiar su intensidad (brillo) en función de los comandos recibidos desde el monitor serie.
Instrucciones:
- Configura el LED para usar PWM en lugar de simplemente encenderlo o apagarlo.
- Envía un valor entre 0 y 255 desde el monitor serie para ajustar el brillo del LED.
Código Inicial:
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
int brillo = Serial.parseInt(); // Lee un entero desde el monitor serie
if (brillo >= 0 && brillo <= 255) {
analogWrite(LED_BUILTIN, brillo); // Ajusta el brillo del LED
Serial.print("Brillo del LED: ");
Serial.println(brillo);
} else {
Serial.println("Valor fuera de rango. Enviar un valor entre 0 y 255.");
}
}
}
Ejercicio 2: Secuencia de Parpadeo del LED
Objetivo: Modificar el código para que el LED parpadee en una secuencia específica basada en los comandos recibidos desde el monitor serie.
Instrucciones:
- Envía el comando 'S' desde el monitor serie para iniciar una secuencia de parpadeo.
- Envía el comando 'P' desde el monitor serie para detener la secuencia de parpadeo.
Código Inicial:
bool parpadeoActivo = false;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
char comando = Serial.read();
if (comando == 'S') {
parpadeoActivo = true;
Serial.println("Secuencia de parpadeo iniciada");
} else if (comando == 'P') {
parpadeoActivo = false;
digitalWrite(LED_BUILTIN, LOW); // Apaga el LED al detener el parpadeo
Serial.println("Secuencia de parpadeo detenida");
}
}
if (parpadeoActivo) {
digitalWrite(LED_BUILTIN, HIGH); // Enciende el LED
delay(500); // Espera 500 ms
digitalWrite(LED_BUILTIN, LOW); // Apaga el LED
delay(500); // Espera 500 ms
}
}
Ejercicio 3: Control de Múltiples LEDs
Objetivo: Modificar el código para controlar dos LEDs utilizando comandos diferentes desde el monitor serie.
Instrucciones:
- Conecta dos LEDs a los pines 9 y 10 del Arduino.
- Envía los comandos 'H1' y 'L1' para encender y apagar el LED en el pin 9, respectivamente.
- Envía los comandos 'H2' y 'L2' para encender y apagar el LED en el pin 10, respectivamente.
const int led1 = 9;
const int led2 = 10;
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
String comando = Serial.readStringUntil('\n');
if (comando == "H1") {
digitalWrite(led1, HIGH);
Serial.println("LED 1 Encendido");
} else if (comando == "L1") {
digitalWrite(led1, LOW);
Serial.println("LED 1 Apagado");
} else if (comando == "H2") {
digitalWrite(led2, HIGH);
Serial.println("LED 2 Encendido");
} else if (comando == "L2") {
digitalWrite(led2, LOW);
Serial.println("LED 2 Apagado");
} else {
Serial.println("Comando desconocido");
}
}
}
No hay comentarios:
Publicar un comentario