Qué es un protocolo
Aprende a dar formato a un mensaje con inicio y fin, para que el receptor sepa dónde empieza y termina.
Qué vas a construir
El mismo circuito de Dos Arduinos que se hablan, con un mensaje nuevo: cada dato va entre < y >. El receptor extrae solo lo que está dentro.
Lo que aprendes
- Qué es un protocolo: un acuerdo sobre cómo se ve un mensaje.
- Por qué un mensaje necesita inicio y fin.
- Cómo leer hasta un carácter con
readStringUntil(). - Cómo quitar caracteres sobrantes con
remove().
Idea clave
Sin un protocolo, el receptor no sabe si lo que llegó es un mensaje completo o la mitad de otro. Un formato simple lo resuelve: el emisor marca dónde empieza y dónde termina cada dato, y el receptor espera esas marcas.
Formato de este curso: <valor>.
Materiales en Tinkercad
- Dos Arduino Uno R3, conectados como en Dos Arduinos que se hablan
Paso 1: Código del emisor
#include <SoftwareSerial.h>
SoftwareSerial enlace(10, 11);
void setup() {
enlace.begin(9600);
}
void loop() {
enlace.print("<");
enlace.print(25);
enlace.println(">");
delay(1000);
}
Paso 2: Código del receptor
#include <SoftwareSerial.h>
SoftwareSerial enlace(10, 11);
void setup() {
Serial.begin(9600);
enlace.begin(9600);
}
void loop() {
if (enlace.available()) {
String mensaje = enlace.readStringUntil('>'); // lee hasta el cierre
mensaje.remove(0, 1); // quita el "<" inicial
Serial.println("Dato: " + mensaje);
}
}
readStringUntil('>') lee todo hasta encontrar el carácter >. Como el mensaje empieza con <, el primer carácter sobra, y por eso lo quitamos con remove(0, 1).
Paso 3: Ejecuta la simulación
Abre el monitor serial del receptor. Debe mostrar “Dato: 25” cada segundo, sin el < ni el >.
Cómo sabes que lo lograste
- El receptor muestra solo el número, sin los símbolos.
- Cambias el valor del emisor a 40 y el receptor lo muestra.
- Puedes explicar qué pasaría si el emisor no enviara el
>.
Qué salió mal
El receptor muestra basura antes del número. Puede que el primer mensaje llegue cortado. Espera un ciclo y revisa si los siguientes son correctos.
El receptor no muestra nada. Confirma que el emisor envía > al final. Sin él, readStringUntil() espera para siempre.
Siguiente clase
En la siguiente clase vas a enviar un dato real: la temperatura de un sensor TMP36, por el mismo cable.