ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 초음파센서 제어
    라즈베리파이 2024. 1. 12. 13:06

    초음파 센서는 주파수를 보냈을때의 시간과 주파수를 보낸후 반사되어 돌아오는 시간의 차이를 측정해서 대략적인 거리를 알 수 있게하는 센서이다.

     

    Trig핀에 10u/s의 트리거 신호를 주면 초음파를 발생시켜서 물체에 쏘고, 

    Echo 핀에서 초음파가 돌아오는 시점의 시간을 측정하여 거리를 재는 원리이다.

    초음파센서의 간단하게 실행시켜보았다.

     

    -digitalRead(echopin) == LOW가 참인 동안 start 변수에 현재 시간을 기록합니다. 이는 초음파 펄스가 에코 핀에 도달하기 직전의 시간이다.

    -digitalRead(echopin) == HIGH가 참인 동안 stop 변수에 현재 시간을 기록합니다. 이는 초음파 펄스가 에코 핀에 도달하기 시간이다.

    -이 두 시간의 차이는 초음파 펄스가 목표물에 부딪치고 다시 센서로 돌아오는 데 걸린 시간입니다. 이 시간을 58로 나누면 거리를 센티미터 단위로 얻을 수 있다.

    -그리고 물체가 얼마나 떨어져 있는지의 거리는 cm로 1초 간격으로 콘솔에 계속 표시가 된다.

     

    -LED2개를 이용해서 거리가 10cm미만 이면 1번 LED가 켜지고 10cm 이상이면 2번 LED가 켜지게 실행해보았다.

     

     

    나머지 코드들은 위와 동일하지만 LED 2개가 사용되므로 gpio와 핀모드르 설정하고 if else문을 써서 10cm 미만이면 1번만 켜지고 나머지는 꺼지게 10cm 이상이면 반대가 되게 설정하면 된다. ( 그 외의 나머지 코드들은 맨위와 동일하다.)

     

    -이번에는 특정 범위거리에서만 LED가 작동하고 나머지 거리에서는 LED가 꺼지고 ERROR라는 메시지와 특정거리에서 얼마나 벗어나있는지의 거리를 출력해주는 동작을 해보았다.

     

    - 이번에는 LED가 1개만 쓰이기 때문에 1개의 gpio와 핀모드를 설정하고 if문에서 &&연산자를 통해 5cm 이상 10cm이하인 범위를 설정해서 LED가 켜지게 하고 else을 통해 나머지인 경우에 LED가 꺼지게 설정했다. 

    - 물체에서부터의 거리가 5미만 일경우에는 ERROR메시지와 현재거리에서 5를 빼서 설정한 범위에서  오차가 얼마나 나오는지 설정했고 10cm 를 초과했을땐 ERROR메시지와  현재거리에서 10을 빼서 설정한 범위에서 오차가 얼만지 표시하게 하였다.

     

    --스위치 2개랑 LED 2개를 이용해 스위치 1번을 누르면 초음파센서가 활성화되고 거리가 10cm 미만이면 1번 LED가 켜지고 10cm 이상이면 2번째 LED가 켜지게 설정해보았다. 

    스위치 2개랑 LED2개가 사용되므로 각각의 핀모드와 gpio를 설정하였다. 

     

    그리고 while문 안에는 설정한 코드이다.

    ( 그 외의 나머지 코드들은 맨위와 동일하다.)

     

    - 여기서는 스위치 1번을 누르면 초음파센서가 활성화가 되게 해야하므로 i의 값이 1 을 주고 스위치2번은 비활성화이므로 i의 값의 0을 줘서 while문을 제어한다.

    - 스위치 1번을 누르면 거리가 10cm 미만이면 1번 LED가 켜지게되고 LED2번은 꺼지게 된다. 10cm이상이면 LED가 반대로 켜진다.

    - 스위치 2번을 누르면 초음파센서가 작동하지 않으므로 LED도 작동되지 않는다.

    '라즈베리파이' 카테고리의 다른 글

    자동 요리 도구 프로젝트  (1) 2024.04.17
    서보모터(Servo motor) 제어  (2) 2024.01.10
    온습도 센서( DHT11) 제어하기  (0) 2024.01.03
    7-segment, pwm 제어  (0) 2023.12.20
    sw 제어하기  (0) 2023.12.12
Designed by Tistory.