반응형
이번것도 조립에 비해 코딩은 별다른 어려움은 없다.
지금까지 잘못된 초음파 센서 코딩도 정확하게 되어 있다.
그리고 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( 0, 0, 0, 0);
}
void Motor_Control(int SR1, int SR2, int SL1, int SL2)
{
digitalWrite(RMOTOR1, SR1);
digitalWrite(RMOTOR2, SR2);
digitalWrite(LMOTOR1, SL1);
digitalWrite(LMOTOR2, SL2);
}
|
'아두이노' 카테고리의 다른 글
아두이노를 이용한 데이터 저장 -#1 (0) | 2020.09.01 |
---|---|
아두이노 2대를 이용한 정수와 실수 전송-#4 (0) | 2020.08.04 |
코딩 이야기 #2 (0) | 2020.08.03 |
Make IT! Arduino -#05 코딩하기 (0) | 2020.08.02 |
Make IT! Arduino -#05 조립하기 2부 (0) | 2020.07.20 |
댓글