안녕하세요!
아두이노 우노, 초음파센서, DC모터(바퀴)를 이용하여 일정거리를 유지하도록 하게 제어를 했습니다.
모터 드라이브가 이상이 있는건지 DC모터가 이상한건지 코딩이 이상한건지 제대로 작동이 안되네요 ㅠㅠ
아두이노 우노와 초음파센서를 이용하여 거리 측정하는건 잘 됐습니다!
int trig = 2;
int echo = 3;
int leftclock = 9;
int leftcounter = 10;
int rightclock = 11;
int rightcounter = 12;
long value, distance;
void setup(){
Serial.begin(9600);
pinMode(leftclock,OUTPUT);
pinMode(leftcounter,OUTPUT);
pinMode(rightclock,OUTPUT);
pinMode(rightcounter,OUTPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
void loop(){
get_US_value();
if(distance > 110){
Serial.println("Go! Go!");
get_GoGo();
} else if(distance < 100){
Serial.println("Go Back!");
get_back();
} else {
Serial.println("Wait!");
get_Wait();
}
delay(300);
}
void get_US_value() {
digitalWrite(trig, LOW);
delayMicroseconds(4);
digitalWrite(trig, HIGH);
delayMicroseconds(20);
digitalWrite(trig, LOW);
value = pulseIn(echo, HIGH);
distance = value/29/0.2;
Serial.print("distance = ");
Serial.print(distance);
Serial.println("mm");
}
void get_GoGo(){
get_US_value();
Serial.println("Go Go!");
digitalWrite(leftclock, HIGH);
digitalWrite(leftcounter, LOW);
digitalWrite(rightclock, HIGH);
digitalWrite(rightcounter, LOW);
}
void get_back() {
digitalWrite(leftclock, LOW);
digitalWrite(leftcounter, HIGH);
digitalWrite(rightclock, LOW);
digitalWrite(rightcounter, HIGH);
}
void get_Wait() {
digitalWrite(leftclock, HIGH);
digitalWrite(leftcounter, HIGH);
digitalWrite(rightclock, HIGH);
digitalWrite(rightcounter, HIGH);
}
최신댓글