반응형
시리얼 통신으로 서보모터 제어하기 (오류)
(준비물)
아두이노 우노(Arduino Uno)
USB 케이블
서보모터
(회로 연결)
#include <Servo.h>
Servo myServo;
int servo = 9; // 서보모터의 ~PWM 아두이노 핀 번호를 선언한다.
void setup(){
myServo.attach(servo);
Serial.begin(115200);
Serial.println("Strat!");
}
void loop(){ // "Wrong Number" 문자열이 계속해서 출력되는 오류 발생
char data = Serial.read();
if(data == '1'){
myServo.writeMicroseconds(500);
}
else if(data == '2'){
myServo.writeMicroseconds(1000);
}
else if(data == '3'){
myServo.writeMicroseconds(1500);
}
else if(data == '4'){
myServo.writeMicroseconds(2000);
}
else if(data == '5'){
myServo.writeMicroseconds(2500);
}
else{
Serial.println("Wrong Number");
}
}
오류 1: if 조건문을 사용하여 '1', '2', '3', '4', '5'까지의 문자로 서보모터를 제어할 수 있도록 하였다. 하지만 마지막 "else"에 '아무것도 입력되지 않을 때'의 조건이 걸리면서 시리얼 모니터에는 항상 "Wrong Number"가 출력된다.
※ Serial.available() 함수는 시리얼 포트에서 읽은 바이트 수를 반환해 주는 함수이다. 즉 시리얼 통신으로 데이터가 들어오면 버퍼에 저장하고, 버퍼 안에 저장된 바이트 수를 반환해 준다. 따라서 아래와 같이 if 조건문으로 사용하게 된다.
오류 2: if 조건문을 사용하여 '1', '2', '3', '4', '5'까지의 문자로 서보모터를 제어할 수 있도록 하였다. 따라서 문자가 아닌 문자열에 조건문의 문자 데이터가 포함되면 동일하게 서보모터를 제어할 수 있다. 즉, '10'과 같은 문자열을 입력하게 되면 '1' 이 포함되어 있어 '1'에 해당하는 제어 값으로 서보모터를 제어하게 된다.
반응형
'Arduino' 카테고리의 다른 글
[Arduino] 초음파 센서(Ultrasonic Sensor)란? (0) | 2021.05.23 |
---|---|
[Arduino] 서보모터 실습: 시리얼 통신으로 서보모터 제어하기 (switch) (0) | 2021.05.19 |
[Arduino] 서보모터 실습: 시리얼 통신으로 서보모터 제어하기 (if~else) (0) | 2021.05.17 |
[Arduino] 서보모터 실습: HIGH 값을 조절하여 서보모터 제어하기 (0) | 2021.05.10 |
[Arduino] 서보모터 파형 (0) | 2021.05.06 |