아두이노 Uno에 모터드라이버와 servo 모터를 연결했는데
servo모터를 초기화하는 과정에서 attach함수를 사용하면 잘 돌아가던 dc모터가 돌아가지 않는 문제가 발생했습니다. (attach(5), attach(12)등 여러 pin에 꽂아보며 초기화를 시켜봄)
아두이노 uno의 7,8,9 - 모터드라이버 out1
아두이노 uno의 10,11,2 - 모터드라이버 out4
아두이노 uno 5v - 모터드라이브 5v
아두이노 uno GND - 모터드라이브 GND
모터드라이브 12v - 1.5v 8개 총 12v 전원 인가
servo motor GND - 아두이노 uno GND
servo motor 5v - 아두이노 5v
servo motor pin - 아두이노 uno pin5
-사용한 servo motor : micro servo 9g
-모터드라이버 : L298N
========================================================================
#include "Servo.h"
Servo s;
void setup(){
//serial
Serial.begin(9600);
s.attach(5);
//s.write(100);
//Motor A(right)
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
//Motor B(left)
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop(){
if(Serial.available()){
char input;
input=Serial.read();
Serial.println(input);
//left moving, right stop
if(input == 'r')
{
//right
digitalWrite(7, HIGH); // Motor A 방향설정1
digitalWrite(8, LOW); // Motor A 방향설정2
analogWrite(9, 200); // Motor A 속도조절 (0~255)
//left
digitalWrite(10, LOW); // Motor B 방향설정1
digitalWrite(11, HIGH); // Motor B 방향설정2
analogWrite(2, 200); // Motor B 속도조절 (0~255)
delay(1000);
servo();
//right
digitalWrite(7, HIGH); // Motor A 방향설정1
digitalWrite(8, LOW); // Motor A 방향설정2
analogWrite(9, 0); // Motor A 속도조절 (0~255)
//left
digitalWrite(10, LOW); // Motor B 방향설정1
digitalWrite(11, HIGH); // Motor B 방향설정2
analogWrite(2, 0); // Motor B 속도조절 (0~255)
delay(1000000);
}
//right moving, left stop
else if(input == 'l')
{
//right
digitalWrite(7, HIGH); // Motor A 방향설정1
digitalWrite(8, LOW); // Motor A 방향설정2
analogWrite(9, 170); // Motor A 속도조절 (0~255)
//left
digitalWrite(10, LOW); // Motor B 방향설정1
digitalWrite(11, HIGH); // Motor B 방향설정2
analogWrite(2, 190); // Motor B 속도조절 (0~255)
delay(3000); // 3초 유지
//right
digitalWrite(7, HIGH); // Motor A 방향설정1
digitalWrite(8, LOW); // Motor A 방향설정2
analogWrite(9, 0); // Motor A 속도조절 (0~255)
//left
digitalWrite(10, LOW); // Motor B 방향설정1
digitalWrite(11, HIGH); // Motor B 방향설정2
analogWrite(2, 0); // Motor B 속도조절 (0~255)
delay(1000000);
}
}
}
void servo(){
s.write(90); //각도 0도로 움직임
delay(500);
s.write(80); //각도 180도로 움직임
delay(500);
s.write(70); //각도 180도로 움직임
delay(500);
s.write(60);
delay(500);
s.write(50);
delay(500);
s.write(60); //각도 180도로 움직임
delay(500);
s.write(70);
delay(500);
s.write(80); //각도 0도로 움직임
delay(500);
s.write(90); //각도 180도로 움직임
delay(500);
s.write(100); //각도 180도로 움직임
delay(500);
}
========================================================================
|