오늘이라도

[Arduino] 5. 서보 모터, DC 모터, LCD 본문

취업성공패키지 SW 개발자 교육/사물 인터넷(IoT)

[Arduino] 5. 서보 모터, DC 모터, LCD

upcake_ 2020. 4. 24. 18:14
반응형

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. 

gif 파일은 클릭해서 보는 것이 정확합니다.


 - 서보 모터 -

▲서보 모터, 회로도

 - 서보 모터에서 데이터선, +선, -선이 나온다.

 - 일반적으로 검은색이 +선, 밝은 선이 데이터선이다.

 

▲서보 모터, 코드

 - 서보 모터를 사용하기 위해 Servo 객체를 생성해준다.

 - myservo.attach(핀번호) : 모터에 데이터를 전달하는 핀 번호

 - myservo.write(각도) : 서보 모터는 0 ~ 179도까지 가능하다.

 

▲서보 모터, 작동 영상

 

 

 - 가변 저항으로 서보 모터 조작 -

▲가변 저항으로 서보 모터 조작, 회로도

 

▲가변 저항으로 서보 모터 조작, 코드

 

▲가변 저항으로 서보 모터 조작, 작동 영상

 

 - 초음파 센서를 이용하여 거리에 따른 서보 모터 조작 -

▲거리에 따른 서보 모터 조작, 회로도

 

▲거리에 따른 서보 모터 조작, 코드

 

▲거리에 따른 서보 모터 조작, 작동 영상

 

 

▲거리에 따른 서보 모터 조작 2, 코드

 - millis() : 밀리 초를 계속 반환하는 함수

 - 시간에 따른 능동적인 조작이 필요한 경우, delay()보다는 millis()를 권장된다.

 

▲거리에 따른 서보 모터 조작 2, 작동 영상 

 

 

 - DC 모터 -

▲DC 모터, 구성 사진

 - 직류 모터를 브레드 보드에 직접 연결하면 많이 복잡하므로 모터 드라이버를 이용한다.

 

▼DC 모터, 코드

더보기

#define ENABLE_A  3  // 좌우 모터 설정
#define IN1_A  4   
#define IN2_A  5   
#define ENABLE_B  9  
#define IN3_B  7   
#define IN4_B  8   
  
byte speedDC = 255;  // 모터 최고 속도
  
void setup()  
{  
  pinMode(ENABLE_A,OUTPUT);  
  pinMode(IN1_A,OUTPUT);  
  pinMode(IN2_A,OUTPUT);  
   pinMode(ENABLE_B,OUTPUT);  
  pinMode(IN3_B,OUTPUT);  
  pinMode(IN4_B,OUTPUT);  
}  
  
void motor_speed(int spd)  //모터에 속도를 준다
{  
  analogWrite(ENABLE_A,spd);  
  analogWrite(ENABLE_B,spd);  
}  
  
void motor_dir(int dir)  
{  
  if ( dir == 0 ) {  // forward   
     digitalWrite(IN1_A,HIGH);  
     digitalWrite(IN2_A,LOW);  
     digitalWrite(IN3_B,HIGH);  
     digitalWrite(IN4_B,LOW);  
  }  
  else if ( dir == 1 ) { // turn right  
     digitalWrite(IN1_A,HIGH);  
     digitalWrite(IN2_A,LOW);  
     digitalWrite(IN3_B,LOW);  
     digitalWrite(IN4_B,HIGH);  
  }  
  else if ( dir == 2 ) { // turn left  
     digitalWrite(IN1_A,LOW);  
     digitalWrite(IN2_A,HIGH);  
     digitalWrite(IN3_B,HIGH);  
     digitalWrite(IN4_B,LOW);  
  }    
  else if ( dir == 4 ) { // backward  
     digitalWrite(IN1_A,LOW);  
     digitalWrite(IN2_A,HIGH);  
     digitalWrite(IN3_B,LOW);  
     digitalWrite(IN4_B,HIGH);  
  }     
}  
  
void loop()  
{  
  motor_speed(150);
  motor_dir(0);  
  delay(2000);
  motor_speed(0);
  delay(1000);
  
  motor_speed(150);  
  motor_dir(1);  
  delay(2000); 
  motor_speed(0);
  delay(1000);

  motor_speed(254); 
  motor_dir(2);  
  delay(2000);  
  motor_speed(0);
  delay(1000); 

  motor_speed(150); 
  motor_dir(4);  
  delay(2000);  
  motor_speed(0);
  delay(1000); 
}  

 

▲DC 모터, 작동 영상

 

 

 - LCD 라이브러리 사용하기, Hello, world! -

▲LCD 라이브러리 예제 활용

 - LCD를 쉽게 사용하기 위해 구글에서 'LiquidCrystal I2C' 라이브러리를 다운로드한다.

 - 해당 라이브러리를 아두이노\libraries에 붙여 넣기 하여 사용할 수 있다.

 

 

▲라이브러리 예제, Hello, world!

 

 

▲Hello, world! 예제 작동 사진

반응형