어느정도 작업을 진행한 후에 이 기록을 적기 시작한다.
현재까지의 상황
- 일단 실질적으로 사용할 서보모터인 ‘MG 996R’ 4개를 구매하였다. (중에 1개가 불량이어서 교체)
- 서보모터 ’SG-90’을 이전 자동문 제작 시 사용해봤기에 기본적인 서보모터 구동 방법을 알기에 모터가 이상 있는지 확인하고
곧바로 다중(2개 이상)제어를 해보았다.
- 여기서 문제가 생겼는데 모터 각각 1개씩 따로 사용할 때는 정상적으로 작동되었는데 두개같이 사용하니 모터에 전기가
들어오는 건 확인할 수 있었는 데 작동은 되지않았다. 이유를 찾아보니 기존의 가장 기본적인 케이블만으로는 서보모터
2개이상 작동하기에 전력이 부족하다는 것을 알게 되었다.
- 9V짜리 건전지와 잭을 구입하여 연결하였더니 서보모터 두개 연결하여 작동시켰더니 제대로 작동했다.
- 조이스틱 모듈을 구입하여 모터1은 X축에 따라, 모터2는 Y축에 따라 설정한 각도로 구동 되도록 하였다.
#include<Servo.h>
Servo servo1; Servo servo2;
byte a;
const int SW_pin = 2; const int X_pin = A0; const int Y_pin = A1;
void setup() { Serial.begin(9600);
servo1.attach(7); servo1.write(0); servo2.attach(8); servo2.write(0);
pinMode(SW_pin, INPUT); digitalWrite(SW_pin, HIGH);
delay(100); }
void loop() { int button = digitalRead(SW_pin); int xReading = analogRead(X_pin); int yReading = analogRead(Y_pin);
Serial.print("Switch: "); Serial.print(button); Serial.print("\n"); Serial.print("X-axis: "); Serial.print(xReading); Serial.print("\n"); Serial.print("Y-axis: "); Serial.println(yReading); Serial.print("\n\n"); delay(300);
if(xReading <= 300) { servo1.write(0); }
else if(xReading >= 900 ) { servo1.write(180); }
else { servo1.write(90); }
if(yReading <= 300) { servo2.write(0); }
else if(yReading >= 900 ) { servo2.write(180); }
else { servo2.write(90); }
//------------------------------------------------------
a = Serial.read();
if(a == '1') { servo1.write(0); delay(10); } else if(a == '2') { servo1.write(90); delay(10); }
else if(a == '4') { servo2.write(0); delay(10); } else if(a == '5') { servo2.write(90); delay(10); }
} |
'프로젝트' 카테고리의 다른 글
라즈베리파이 MQTT 사용 (0) | 2020.12.10 |
---|---|
아두이노를 이용한 환자감시장치(Patient Monitor) 제작 (0) | 2020.12.10 |
4D프린팅 기술 (0) | 2020.12.10 |