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.