Menu
CoddyTech

Ângulo do servo via Serial

Parte da seção Saídas do Journey de Arduino da Coddy. Lição 23 de 24.

O braço também pode receber comandos do monitor serial. Digite um ângulo e pressione Enter; Serial.parseInt() lê o número:

if (Serial.available() > 0) {
  int angle = Serial.parseInt();
  Serial.read();  // a quebra de linha após o número
  // use angle
}

A quebra de linha após o número continua aguardando. Na próxima execução de loop(), parseInt() não encontrará nenhum dígito, aguardará um segundo e retornará 0. Ignorar esse 0 funcionou para uma velocidade de piscar, mas 0 é um ângulo válido. Portanto, leia e descarte a quebra de linha com um único Serial.read() logo após o número.

Alguém também pode digitar um número que não seja um ângulo. arm.write() interpreta qualquer número a partir de 544 como uma duração de pulso em microssegundos, então 1000 colocaria o braço perto de 45 graus. constrain() mantém primeiro o ângulo entre 0 e 180:

angle = constrain(angle, 0, 180);  // passe a variável para ela, não parseInt()
challenge icon

Desafio

Médio

Mova o servo para o ângulo digitado no monitor serial:

  • quando um número chegar, leia-o com Serial.parseInt() e depois descarte a nova linha (0 também é um ângulo)
  • mantenha-o entre 0 e 180 com constrain()
  • mova o braço e imprima o ângulo como Angle: 45

Pressione Run, envie 45 pelo monitor serial e depois pressione Check.

Experimente você mesmo

#include <Servo.h>

Servo arm;

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

void loop() {
  // quando um número chegar: leia-o, descarte a quebra de linha,
  // mantenha-o entre 0 e 180, mova o braço e imprima o número
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Saídas

Pratique por conta própria: Playground de Arduino