💻 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?

Updated: