Menu
CoddyTech

시리얼로 서보 각도 설정하기

Coddy Arduino 여정의 출력 섹션에 포함된 레슨. 24개 중 23번째.

팔은 Serial 모니터에서 명령을 받을 수도 있습니다. 각도를 입력하고 Enter 키를 누르면 Serial.parseInt()가 숫자를 읽습니다:

if (Serial.available() > 0) {
  int angle = Serial.parseInt();
  Serial.read();  // 숫자 뒤의 줄바꿈 문자
  // angle 사용
}

숫자 뒤의 줄바꿈 문자는 그대로 대기 상태로 남습니다. 다음에 loop()가 실행되면 parseInt()는 숫자를 찾지 못해 1초 동안 기다린 다음 0을 반환합니다. 깜박임 속도에는 그 0을 무시해도 괜찮았지만, 0은 유효한 각도입니다. 그러므로 숫자 바로 뒤에 Serial.read()를 한 번 사용해 줄바꿈 문자를 읽어 없앱니다.

누군가 각도가 아닌 숫자를 입력할 수도 있습니다. arm.write()는 544 이상의 숫자를 마이크로초 단위의 펄스 길이로 읽으므로, 1000을 입력하면 팔은 약 45도 위치로 이동합니다. 먼저 constrain()를 사용해 각도를 0에서 180 사이로 제한합니다:

angle = constrain(angle, 0, 180);  // parseInt()가 아니라 변수를 전달하세요
challenge icon

챌린지

중급

직렬 모니터에 입력한 각도로 서보를 움직이세요:

  • 숫자가 도착하면 Serial.parseInt()로 읽은 다음, 개행 문자를 읽어 버리세요(0도 각도입니다).
  • constrain()을 사용해 값을 0에서 180 사이로 유지하세요.
  • 암을 움직이고 각도를 Angle: 45 형식으로 출력하세요.

Run을 누르고 직렬 모니터에서 45를 전송한 다음 Check를 누르세요.

직접 해보기

#include <Servo.h>

Servo arm;

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

void loop() {
  // 숫자가 들어오면 숫자를 읽고 줄바꿈 문자도 읽어 버린 다음,
  // 값을 0에서 180 사이로 유지하고 arm을 움직인 뒤 값을 출력합니다
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

출력의 모든 레슨

직접 연습해 보세요: Arduino 플레이그라운드