les vencimos · offline

L25. Serial: ver qué hace la placa

Pensar en el tiempo (70–84%)

Maestro

Hasta ahora el único testigo era el LED. Serial es un hilo de texto hacia el ordenador. La placa escribe un número y tú lo lees. Hace falta arrancar los dos lados a la misma velocidad. Aquí usamos 9600. El monitor donde se lee vive en el entorno, y el detalle de abrirlo está en Software. El sketch, en cambio, es de esta lección.

Serial.begin(9600) va en setup. Sin esa línea, println no tiene camino. Serial.println(valor) manda el número y baja de renglón. No lo pongas en un loop sin ninguna espera si vas a inundar: mil líneas por segundo no se leen. Un delay corto, o mejor más adelante millis, deja el texto a ritmo humano.

El ejemplo lee A0, el potenciómetro de la lección 16, y lo escribe. Ahora sí ves el 512 que antes solo imaginabas. Gira y mira si el número sube. Si se queda en 0, el cursor no llega a A0 o falta masa. Si se queda en 1023, estás pegado a 5V. Eso es depurar con datos, no con fe.

El Uno usa los pines 0 y 1 para ese canal. Mientras hablas por USB, no pongas un botón en el 0 o en el 1: la frase y el botón se pisan. Si la carga del programa falla a medias, quita lo que haya en 0 y 1 y prueba otra vez.

La velocidad tiene que coincidir. Placa a 9600 y monitor a 115200 es texto basura, no un sensor loco. Cuando veas símbolos, iguala los dos números antes de tocar el cable.

Montaje

No los uses0 RX1 TXmientras haya USBSíA0 mide13 avisa9600 en el monitorCableUSBsolo unoquita el otro
El número de A0 sale por el USB. Los pines 0 y 1 quedan sin pulsadores y sin LEDs mientras uses el monitor.

Pines de esta lección

Uno R3 · 5 V · mira la serigrafía, no la memoriaA0se imprime0no cablear1no cablear9600igual en los dos
9600 en el sketch y 9600 en el monitor. Si no coinciden, verás basura, no un sensor roto.

Por qué

Serial.begin(9600) abre la conversación a 9600 bits por segundo. El monitor del entorno tiene que estar en el mismo número. Si el monitor está a 115200, los dígitos salen ilegibles y el sensor parece loco. No lo está. Están hablando a velocidades distintas.

En el Uno, esa conversación usa los pines 0 y 1, aunque tú no los nombres. RX y TX van al chip del USB. Un pulsador en el 0 mientras imprimes hace que la carga del programa falle o que salgan caracteres fantasma. Durante esta lección, 0 y 1 se quedan vacíos. El botón, si lo tienes de antes, sigue en el 2.

println del analogRead manda el número y un salto de línea. delay(200) deja leerlo. Sin el delay, el monitor se llena tan rápido que no ves el giro del potenciómetro. Es un delay de lectura humana, no de medida. La medida es instantánea al lado.

El cable USB no se reparte. Cierra otros programas que se hayan quedado el puerto. Si la carga se queda a medias, cierra el monitor, carga, y vuelve a abrirlo. Dos dueños del mismo puerto es un fallo clásico y no se arregla cambiando A0.

Práctica

  1. Quita cualquier cable de los pines 0 y 1.
  2. Deja el potenciómetro en A0, como en su lección, o el LDR si es lo que tienes montado.
  3. Carga el sketch de Serial.begin(9600) y println.
  4. Abre el monitor y pon 9600. Gira o tapa. Los números tienen que moverse.
  5. Cambia el monitor a otra velocidad, mira la basura, y vuelve a 9600. Así reconoces el fallo.
  6. Anota un número a la luz y otro a oscuras, o a cada extremo del potenciómetro. Eso es calibrar con ojos de verdad.
  7. No dejes un pulsador nuevo en el pin 0 porque te sobraba el agujero.

Anota el montaje

Escribe qué cable va a qué pin, o qué has entendido del paso. Se guarda en este aparato.

Ejemplos resueltos

Números que no son números

El monitor está a 115200. Se ven símbolos. Se culpa al potenciómetro y se recalibra un umbral imposible.

Se igualan las dos velocidades a 9600. Los símbolos vuelven a ser enteros entre 0 y 1023. El umbral se elige después, con números buenos.

Ya no carga el sketch

Un cable quedó en el pin 0 desde una prueba. El ordenador y el cable se pisan al intentar hablar.

Se saca el cable del 0 y del 1. Se carga otra vez. El sensor sigue en A0, que no estorba al USB.

En la mesa

Abre el monitor, pon 9600, gira o tapa, y lee un número en voz alta. Tiene que estar entre 0 y 1023. Si ves símbolos, no gires el potenciómetro: mira la velocidad. Iguala, y solo entonces vuelve a girar. Anota el número de un extremo y el del otro. Esos dos números valen más que el umbral heredado de una lección anterior.

Intenta cargar un sketch con el monitor abierto si tu entorno se queja. Cierra el monitor, carga, ábrelo. Aprende esa secuencia ahora, con un programa de una línea, no el día que el proyecto tenga diez archivos y creas que se rompió el chip.

Mira los pines 0 y 1 vacíos antes de dar la lección por cerrada. Un cable olvidado ahí explica el siguiente no carga. Sácalo aunque parezca que no molesta.

Sketch

void setup() {
  Serial.begin(9600);
}

void loop() {
  int valor = analogRead(A0);
  Serial.println(valor);
  delay(200);
}

Ejercicio

Con el potenciómetro en A0, sube el sketch y abre el monitor a 9600. Anota el número con el giro a un lado, al centro y al otro. Esos tres números son tu calibración de hoy.

Autoevaluación

1. ¿Qué línea abre el canal, y a qué velocidad va este curso?

2. ¿Por qué no conviene usar los pines 0 y 1 a la vez que Serial?

3. Si ves símbolos en vez de números, ¿qué miras primero?