Â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()Desafio
MédioMova 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
}
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