BASIC4MCU | 질문게시판 | 서보모터 제어에 대해 질문있습니다.
페이지 정보
작성자 뉴비에오 작성일2022-07-30 23:11 조회4,537회 댓글2건첨부파일
본문
시리얼 모니터에 문자를 입력하여 서보모터를 제어하려고 하는데 3번핀에 연결된 모터는 진동이 나면서 모터가 움직이지 않고 2번핀에 연결된 모터는 움직일 때도 있지만 3번핀 모터처럼 움직이지 않을때가 있습니다.
#include <Servo.h>
Servo servo;
Servo servo2;
int motor1 = 2;
int motor2 = 3;
int angle = 90;
void setup() {
servo.attach(motor1);
servo2.attach(motor2);
Serial.begin(9600);
Serial.println("Enter the u or d or a or s");
Serial.println("u = angle + 15");
Serial.println("d = angle - 15\n");
Serial.println("a = angle + 15");
Serial.println("s = angle - 15\n");
}
void loop() {
if(Serial.available())
{
char input = Serial.read();
if(input == 'u')
{
Serial.print("+15");
for(int i = 0; i < 15; i++)
{
angle = angle + 1;
if(angle >= 180)
angle = 180;
servo.write(angle);
delay(10);
}
Serial.print("\t\t");
Serial.println(angle);
}
else if(input == 'd')
{
Serial.print("\t-15\t");
for(int i = 0; i < 15; i++)
{
angle = angle - 1;
if(angle <= 0)
angle = 0;
servo.write(angle);
delay(10);
}
Serial.println(angle);
}
else
{
Serial.println("wrong");
}
if(input == 'a')
{
Serial.print("+15");
for(int i = 0; i < 15; i++)
{
angle = angle + 1;
if(angle >= 180)
angle = 180;
servo2.write(angle);
delay(10);
}
Serial.print("\t\t");
Serial.println(angle);
}
else if(input == 's')
{
Serial.print("\t-15\t");
for(int i = 0; i < 15; i++)
{
angle = angle - 1;
if(angle <= 0)
angle = 0;
servo2.write(angle);
delay(10);
}
Serial.println(angle);
}
else
{
Serial.println("wrong");
}
}
}
특정 문자를 입력할 때 마다 15'씩 움직이는 코드입니다. 모터는 sg90을 사용합니다. 무엇이 문제인지 알려주시면 감사겠습니다.
댓글 2
조회수 4,537master님의 댓글
master 작성일
전원장치 문제가 가장 흔합니다.
5V 2A 이상의 아답터를 5V(VCC)에 직접 연결해서 구동 해보세요
뉴비에오님의 댓글
뉴비에오
알겠습니다! 감사합니다!