El Resultado

Escribe comandos en tu ordenador y el Arduino responde. Enciende LEDs, lee el estado, haz que parpadee... todo controlado desde el teclado. Es como chatear con tu robot!

💻
Tu Ordenador
Monitor Serial
TX (envias)
RX (recibes)
🤖
Arduino UNO
9600 baudios
💡

Solo necesitas el cable USB

El mismo cable que usas para programar sirve para comunicarte. Es el puente entre dos mundos!

Que Vas a Aprender

📡

Comunicacion Serial

Los datos viajan como una fila de hormiguitas: uno detras de otro. Por eso se llama "serial".

📝

Protocolo de Comandos

Definir reglas: que palabras entiende el Arduino y como responde a cada una.

📦

Buffer de Entrada

El Arduino guarda las letras que llegan hasta que ve un ENTER. Entonces procesa todo junto.

🔄

Bidireccional

Tu envias comandos Y el Arduino responde. Conversacion de ida y vuelta!

Prueba el Terminal

Escribe comandos como si fuera el Monitor Serial de Arduino. Los LEDs virtuales responderan!

Monitor Serial - 9600 baud
=================================
EigenRobotics - Control Serial
=================================
Escribe HELP para ver comandos
>
ROJO (8)
VERDE (9)
AZUL (10)
INTEGRADO (13)
Buffer de entrada (lo que el Arduino va recibiendo):
_
_
_
_
_
_
_
_
_
_

Como Funciona

El Viaje de un Comando
1
Escribes "LED_ON" y pulsas Enter en tu ordenador
2
Las letras viajan por el cable USB: L...E...D..._...O...N...↵
3
El Arduino guarda cada letra en el buffer hasta ver el Enter (↵)
4
Compara el texto con su lista de comandos: "Ah! LED_ON!"
5
Ejecuta la accion y envia respuesta: "LED encendido"

9600 Baudios

Es la velocidad: 9600 bits por segundo. Como un acuerdo entre Arduino y PC para hablar al mismo ritmo. Si uno va mas rapido, se pierden datos!

Comandos Disponibles

Comando Que hace Respuesta
HELP Muestra lista de comandos Lista completa
LED_ON Enciende el LED integrado (pin 13) "LED encendido"
LED_OFF Apaga el LED integrado "LED apagado"
LED_R Enciende LED rojo (pin 8) "LED Rojo encendido"
LED_G Enciende LED verde (pin 9) "LED Verde encendido"
LED_B Enciende LED azul (pin 10) "LED Azul encendido"
OFF Apaga todos los LEDs "Todo apagado"
BLINK:5 Parpadea N veces (1-20) "Parpadeando..."
SAY:hola Arduino repite tu mensaje "Arduino dice: hola"
STATUS Muestra estado actual LED, uptime, memoria

El Codigo

El secreto esta en el loop(): lee caracter por caracter hasta encontrar un Enter.

p10_comunicacion.ino
// Buffer para guardar el comando
String comandoBuffer = "";

void setup() {
  Serial.begin(9600);  // Iniciar comunicacion

  pinMode(LED_BUILTIN, OUTPUT);

  Serial.println("EigenRobotics - Control Serial");
  Serial.println("Escribe HELP para ver comandos");
}

void loop() {
  // Mientras haya datos esperando...
  while (Serial.available() > 0) {
    char c = Serial.read();  // Lee UN caracter

    if (c == '\n' || c == '\r') {
      // Es un ENTER! Procesar comando
      if (comandoBuffer.length() > 0) {
        procesarComando(comandoBuffer);
        comandoBuffer = "";  // Limpiar para el siguiente
      }
    } else {
      // Agregar letra al buffer
      comandoBuffer += c;
    }
  }
}

void procesarComando(String cmd) {
  cmd.trim();           // Quitar espacios
  cmd.toUpperCase();    // Todo a mayusculas

  Serial.print("> ");
  Serial.println(cmd);  // Echo del comando

  // Comparar con comandos conocidos
  if (cmd == "LED_ON") {
    digitalWrite(LED_BUILTIN, HIGH);
    Serial.println("LED encendido");
  }
  else if (cmd == "LED_OFF") {
    digitalWrite(LED_BUILTIN, LOW);
    Serial.println("LED apagado");
  }
  else if (cmd.startsWith("BLINK:")) {
    int veces = cmd.substring(6).toInt();
    parpadear(veces);
  }
  else {
    Serial.println("Comando no reconocido");
  }
}
🔍

Serial.available()

Devuelve cuantos caracteres hay esperando en el buffer. Si es mayor que 0, hay datos que leer!

Nivel Avanzado: Control desde Python

Una vez dominas la comunicacion serial, puedes controlar Arduino desde cualquier programa!

Control con Python
control_arduino.py
import serial
import time

# Conectar al Arduino
arduino = serial.Serial('/dev/cu.usbmodem14201', 9600)
time.sleep(2)  # Esperar a que inicie

# Encender LED
arduino.write(b'LED_ON\n')
respuesta = arduino.readline()
print(respuesta.decode())

# Parpadear 5 veces
arduino.write(b'BLINK:5\n')

# Leer todas las respuestas
while True:
    if arduino.in_waiting:
        print(arduino.readline().decode(), end='')
    else:
        time.sleep(0.1)
        if not arduino.in_waiting:
            break

arduino.close()
💡

Primero instala pyserial

Ejecuta: pip install pyserial. El puerto varia segun tu sistema (Windows: COM3, Mac: /dev/cu.usbmodem...)

Combina con Otros Proyectos

La comunicacion serial es la base para controlar cualquier proyecto desde tu PC!

P5 Robot Movil
ADELANTE, ATRAS
IZQUIERDA, DERECHA
VELOCIDAD:150
P7 Brazo Robotico
BASE:90, CODO:45
PINZA:ABRIR
PINZA:CERRAR
P9 Display LCD
MSG:Hola mundo
CLEAR
LINEA2:texto
P3 Sistema Alarma
ARMAR, DESARMAR
STATUS
SENSIBILIDAD:50

Pasos para Empezar

Sube el codigo

Conecta Arduino por USB y sube p10_comunicacion.ino

Abre el Monitor Serial

Tools → Serial Monitor (o Ctrl+Shift+M)

Configura correctamente

Selecciona 9600 baud y "Newline" en el desplegable

Escribe HELP

Veras la lista de comandos disponibles

Prueba LED_ON

El LED integrado (pin 13) debe encenderse

Inventa tu comando!

Modifica el codigo para crear comandos nuevos

Simulador

Wokwi - Simulador Arduino Abrir en Wokwi →
💡

Tip para Wokwi

Pega el codigo y haz click en el icono del Monitor Serial (pantalla con terminal) para ver las respuestas!

Experimentos

1

Comando RAINBOW

Crea un comando que encienda rojo, verde, azul en secuencia con delay entre cada uno.

2

Comandos con Parametros

Crea DELAY:500 para cambiar la velocidad de parpadeo.

3

Leer Sensores

Anade comando TEMP que lea un sensor de temperatura y envie el valor.

4

Control del Robot P5

Integra con el robot: ADELANTE, ATRAS, GIRA_IZQ, GIRA_DER.

5

Datalogger

Crea un programa Python que guarde lecturas de sensores en un archivo CSV.

6

Interfaz Grafica

Usa Processing o Python+Tkinter para crear botones que envien comandos.