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!
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!
Como Funciona
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.
// 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!
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!
IZQUIERDA, DERECHA
VELOCIDAD:150
PINZA:ABRIR
PINZA:CERRAR
CLEAR
LINEA2:texto
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
Tip para Wokwi
Pega el codigo y haz click en el icono del Monitor Serial (pantalla con terminal) para ver las respuestas!
Experimentos
Comando RAINBOW
Crea un comando que encienda rojo, verde, azul en secuencia con delay entre cada uno.
Comandos con Parametros
Crea DELAY:500 para cambiar la velocidad de parpadeo.
Leer Sensores
Anade comando TEMP que lea un sensor de temperatura y envie el valor.
Control del Robot P5
Integra con el robot: ADELANTE, ATRAS, GIRA_IZQ, GIRA_DER.
Datalogger
Crea un programa Python que guarde lecturas de sensores en un archivo CSV.
Interfaz Grafica
Usa Processing o Python+Tkinter para crear botones que envien comandos.