본문 바로가기

프로그래밍/Arduino

거리에 따른 piezo 스피커 출력시간 조절

  1. 준비물
    - 초음파 센서 1개
    - piezo 스피커 1개


  2. 코드
  3. //초음파센서 trig, echo핀 설정
    const int distTrigPin = 2;
    const int distEchoPin = 3;
    
    const int piezoPin = 8;
    
    void setup() {
      pinMode(distTrigPin, OUTPUT);
      pinMode(distEchoPin, INPUT);
    }
    
    void loop() {
      //거리 측정
      digitalWrite(distTrigPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(distTrigPin, LOW);
    
      long duration = pulseIn(distEchoPin, HIGH);
      if (duration == 0) {
        return;
      }
    
      long distance = duration / 58.2;
    
      output1(distance); //delay를 통해 출력 시간 조절
    //  output2(distance); //그냥 if문 사용해서 조절
    }
    
    void output1(long distance) {
      tone(piezoPin, 1000, 20);
      delay(20);
      noTone(piezoPin);
    
      //거리에 따라 piezo 스피커 출력 시간을 조절하기 위함
      delay(2 * distance);
    }
    
    void output2(long distance) {
        if (distance < 10) {
        tone(piezoPin, 1000, 20);
        delay(40);
      }
      else if(distance < 20) {
        tone(piezoPin, 1000, 100);
        delay(200);
      }
      else if(distance < 20) {
        tone(piezoPin, 1000, 200);
        delay(400);
      }
      
      noTone(piezoPin);
    }
    
    


  4. 영상
  5. <영상1. delay를 통한 출력시간 조절>

    <영상2. if문을 통한 출력시간 조절>



  6. 알게된 점
    - delay를 통해 출력시간을 조절한다는 생각은 안해봤는데 신선하군.