에프디크리에이티브 사 에서 제작한 교육용 아두이노를 이용하여

초음파 탐지기를 이용한 후방주차 감지 시스탬을 구현해보았습니다.



즉흥적으로 짠거라 회로도는 따로없고 사진을 참고하시면됩니다.


소스는

int cnt;
int dummcnt;
long Distance;
long Tempture;
unsigned long duration;
int pin = 15;

void setup() {
  pinMode(32, OUTPUT);   
  pinMode(40, OUTPUT);     
  pinMode(41, OUTPUT);     
  pinMode(42, OUTPUT);     
  pinMode(43, OUTPUT);     
  pinMode(44, OUTPUT);     
  pinMode(45, OUTPUT);     
  pinMode(46, OUTPUT);     
  pinMode(47, OUTPUT);  
    Serial.begin(9600);    
    Tempture = 25;    
    pinMode(pin,OUTPUT);
    digitalWrite(pin, LOW);

    cnt = 0;
}

void allOff(){
   digitalWrite(40, LOW); 
   digitalWrite(41, LOW);
   digitalWrite(42, LOW);
   digitalWrite(43, LOW);
   digitalWrite(44, LOW);
   digitalWrite(45, LOW);
   digitalWrite(46, LOW);
   digitalWrite(47, LOW);
  
   //delay(1000);
}
void onLed(int num){
   digitalWrite(32,LOW);
 for(int j = 0 ; j<num ; j++){
   int lednum = j+40;
   digitalWrite(lednum, HIGH);
  
 }

}

void loop() {

    delay(150);
    
    pinMode(pin,OUTPUT);
    
    digitalWrite(15,HIGH);
    delayMicroseconds(10); 
    digitalWrite(15,LOW);
    
    pinMode(pin,INPUT);
    duration = pulseIn(pin, HIGH);
    
    Distance = (331.5 + 0.607 * Tempture) * ( duration * 0.001 / 2 );

    Serial.print("value (mm) = ");
    Serial.println(Distance);    
    //led all off
   
    if(Distance<40){
      digitalWrite(32,HIGH);
      allOff();
    }else if(Distance>=50 && Distance < 100){
      digitalWrite(32,HIGH);
      delay(50);
      digitalWrite(32,LOW);
      delay(50);
      digitalWrite(32,HIGH);
      delay(50);
      digitalWrite(32,LOW);
      delay(50);
      digitalWrite(32,HIGH);
      delay(50);
      digitalWrite(32,LOW);
      delay(50);
      digitalWrite(32,HIGH);
      delay(50);
      digitalWrite(32,LOW);
      
      onLed(1);
    }else if(Distance>=100 && Distance < 150){
      digitalWrite(32,HIGH);
      delay(100);
      digitalWrite(32,LOW);
      delay(100);
      digitalWrite(32,HIGH);
      delay(100);
      digitalWrite(32,LOW);
      onLed(2);
    }else if(Distance>=150 && Distance < 200){
      digitalWrite(32,HIGH);
      delay(150);
      digitalWrite(32,LOW);
      onLed(3);     
    }else if(Distance>=200 && Distance < 250){
      digitalWrite(32,HIGH);
      delay(200);
      digitalWrite(32,LOW);
      onLed(4);     
    }else if(Distance>=250 && Distance < 300){
      onLed(5);   
    }else if(Distance>=300 && Distance < 350){
      onLed(6);
    }else if(Distance>=350 && Distance < 400){
      onLed(7);
    }else{
      onLed(8);
    }
}

위와같이 소스를 설정하시면 아래영상처럼 구동됩니다.

소리를 키워주세요!





+ Recent posts