P08 - Control interactivo mediante el Monitor Serie
💻 P08 - Control interactivo mediante el Monitor Serie
ℹ️ Empieza aquí:
En esta práctica aprenderás a utilizar el Monitor Serie como interfaz de control, enviando comandos desde el ordenador al Arduino.
Este enfoque es fundamental en sistemas reales, donde los dispositivos se comunican con otros sistemas mediante protocolos de texto o binarios.
Implementarás un pequeño intérprete de comandos, capaz de controlar LEDs y un buzzer según las órdenes recibidas.
🚀 Objetivos
• Utilizar el Monitor Serie como interfaz de usuario.
• Leer datos enviados desde el ordenador.
• Interpretar comandos de texto.
• Controlar salidas en función de comandos recibidos.
• Diseñar sistemas interactivos básicos.
🧩 Contenidos trabajados
• Comunicación serie (Serial.begin, Serial.read).
• Recepción de caracteres.
• Interpretación de comandos.
• Control de LEDs y buzzer.
• Interacción usuario-microcontrolador.
💻 Materiales y recursos
• Arduino UNO.
• Protoboard.
• 2 LEDs.
• 2 resistencias (220–330 Ω).
• 1 buzzer activo.
• Cables Dupont.
• Arduino IDE.
🔧 Montaje práctico
Conecta:
LED verde
• Ánodo → pin 8
• Cátodo → resistencia → GND
LED rojo
• Ánodo → pin 9
• Cátodo → resistencia → GND
Buzzer
• Positivo → pin 10
• Negativo → GND
🧭 Desarrollo de la práctica
Paso 1: Crear el proyecto
Crear proyecto:
P08_Control_Serie_ApellidoNombre
Paso 2: Configurar comunicación serie
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
Serial.println("Sistema listo");
Serial.println("Comandos disponibles:");
Serial.println("V → LED verde");
Serial.println("R → LED rojo");
Serial.println("B → buzzer");
Serial.println("A → apagar todo");
}
Paso 3: Leer comandos
void loop() {
if (Serial.available() > 0) {
char comando = Serial.read();
Paso 4: Interpretar comandos
if (comando == 'V') {
digitalWrite(8, HIGH);
Serial.println("LED verde ON");
}
else if (comando == 'R') {
digitalWrite(9, HIGH);
Serial.println("LED rojo ON");
}
else if (comando == 'B') {
digitalWrite(10, HIGH);
Serial.println("Buzzer ON");
}
else if (comando == 'A') {
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
Serial.println("Todo OFF");
}
}
}
📄 Código completo
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
Serial.println("Sistema listo");
Serial.println("Comandos disponibles:");
Serial.println("V → LED verde");
Serial.println("R → LED rojo");
Serial.println("B → buzzer");
Serial.println("A → apagar todo");
}
void loop() {
if (Serial.available() > 0) {
char comando = Serial.read();
if (comando == 'V') {
digitalWrite(8, HIGH);
Serial.println("LED verde ON");
}
else if (comando == 'R') {
digitalWrite(9, HIGH);
Serial.println("LED rojo ON");
}
else if (comando == 'B') {
digitalWrite(10, HIGH);
Serial.println("Buzzer ON");
}
else if (comando == 'A') {
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
Serial.println("Todo OFF");
}
}
}
✅ Comprobación de funcionamiento
Abrir Monitor Serie.
Seleccionar:
Velocidad: 9600
Sin salto de línea o “Nueva línea”
Enviar comandos:
V
R
B
A
Verificar funcionamiento.
📦 Entrega
• Archivo .ino
• Captura Monitor Serie
• Vídeo funcionamiento
📊 Rúbrica de evaluación
| Criterio | Excelente | Adecuado | Insuficiente |
|---|---|---|---|
| Comunicación serie | Correcta | Parcial | Incorrecta |
| Interpretación | Funciona todo | Parcial | Incorrecto |
| Control hardware | Correcto | Parcial | Incorrecto |
| Código | Claro | Mejorable | Incorrecto |
| Comprensión | Alta | Media | Baja |
🎯 Para pensar (opcional)
¿Cómo podrías enviar comandos completos como “LED ON” en lugar de una sola letra?