Menu
CoddyTech

Ángulo del servo desde Serial

Parte de la sección Salidas del Journey de Arduino de Coddy. Lección 23 de 24.

El brazo también puede recibir órdenes del monitor serie. Escribe un ángulo y presiona Enter; Serial.parseInt() lee el número:

if (Serial.available() > 0) {
  int angle = Serial.parseInt();
  Serial.read();  // el salto de línea después del número
  // usa angle
}

El salto de línea después del número se queda esperando. En la siguiente ejecución de loop(), parseInt() no encontraría dígitos, esperaría un segundo y devolvería 0. Ignorar ese 0 funcionó para una velocidad de parpadeo, pero 0 es un ángulo real. Así que elimina el salto de línea con un Serial.read() justo después del número.

Alguien también podría escribir un número que no sea un ángulo. arm.write() interpreta cualquier número a partir de 544 como una duración de pulso en microsegundos, así que 1000 colocaría el brazo cerca de los 45 grados. constrain() mantiene primero el ángulo entre 0 y 180:

angle = constrain(angle, 0, 180);  // pásale la variable, no parseInt()
challenge icon

Desafío

Intermedio

Mueve el servo al ángulo escrito en el monitor Serial:

  • cuando llegue un número, léelo con Serial.parseInt(), después lee y descarta el salto de línea (0 también es un ángulo)
  • manténlo entre 0 y 180 con constrain()
  • mueve el brazo e imprime el ángulo como Angle: 45

Pulsa Run, envía 45 desde el monitor Serial y después pulsa Check.

Pruébalo tú mismo

#include <Servo.h>

Servo arm;

void setup() {
  arm.attach(9);
  arm.write(90);
  Serial.begin(9600);
}

void loop() {
  // cuando llegue un número: léelo y consume el salto de línea,
  // mantenlo entre 0 y 180, mueve el brazo e imprímelo
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Salidas

Practica por tu cuenta: Playground de Arduino