본문 바로가기
아두이노

Make IT! Arduino -#06 코딩하기

by 오징어땅콩2 2020. 8. 4.
반응형

이번것도 조립에 비해 코딩은 별다른 어려움은 없다.

지금까지 잘못된 초음파 센서 코딩도 정확하게 되어 있다.

그리고 5번 코딩과 거의 유사 하기 때문에 약간만 수정하면 되기 때문에 큰 어려움은 없다.

약간의 설명을 하면 전진 하다가 초음파 센서로 앞에 장애물이 발생하면 후진하고 위회전 하고 전진하는 개념이다.

코딩을 보면 쉽게 알수 있을것 같다.

이것도 코딩에 대한 오류는 발견하지 못했다.

 

 
#define RMOTOR1 9
#define RMOTOR2 10
#define LMOTOR1 5
#define LMOTOR2 6
#define speed HIGH
#define  epin  3 //초음파 에코
#define  tpin  2 //초음파 트리거
 
void setup() 
{
  pinMode(RMOTOR1 , OUTPUT);
  pinMode(RMOTOR2 , OUTPUT);
  pinMode(LMOTOR1 , OUTPUT);
  pinMode(LMOTOR2 , OUTPUT);   
 
  digitalWrite(RMOTOR1, LOW);
  digitalWrite(RMOTOR2, LOW);
  digitalWrite(LMOTOR1, LOW);
  digitalWrite(LMOTOR2, LOW);
   
  Serial.begin(115200);
}
 
void loop() 
  if(GetDistanceCM() < 25
  {
    move_stop();
    delay(300); 
    
    move_back();
    delay(300); 
    
    turn_left();
    delay(300);            
  }
  else move_forward();
  
  delay(10);              
}
 
float GetDistanceCM()
  float duration;
  float distance;  
  digitalWrite(epin, LOW);
  digitalWrite(tpin, LOW);
  
  delayMicroseconds(2); 
  digitalWrite(tpin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(tpin, LOW);   
   
  duration = pulseIn(epin,HIGH);
  //distance = (340.0*duration/1000/2/10);     
  distance = (duration/58.8);  
 
  //Serial.print(distance);  
  //Serial.println(" cm.");
 
  return distance;
}
 
void move_forward()
{
  //전진
  Motor_Control(speed, 0, speed, 0);
}
 
void move_back()
{
  //후진
  Motor_Control( 0, speed,  0, speed);
}
 
void turn_right()
{
  //우회전
  Motor_Control( 0, speed,  speed, 0);
}
 
void turn_left()
{
  //죄회전
  Motor_Control( speed, 0,  0, speed);
}
 
void move_stop()
{
  //정지
  Motor_Control( 00,  00);
}
 
void Motor_Control(int SR1, int SR2, int SL1, int SL2)
{
  digitalWrite(RMOTOR1, SR1);
  digitalWrite(RMOTOR2, SR2);
  digitalWrite(LMOTOR1, SL1);
  digitalWrite(LMOTOR2, SL2);  
}

 

 

댓글