아두이노 우노와 초음파센서로 DC모터 제어

메카 2016-10-18 (화) 17:38 7년전 4274  

안녕하세요!

아두이노 우노, 초음파센서, 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);
}


메카리워즈 Image Map


모바일 버전으로 보기