Raspberry Pi
라즈베리파이3) 초음파 센서를 이용하여 거리 출력하기(LED로 거리 색깔 조절)
Ok_JH
2020. 10. 16. 16:22
- 2< distance_value < 300일 때 GREEN, 그 외에는 RED 출력
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
TRIG = 23
ECHO = 24
LED_R = 13
LED_G = 19
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.setup(LED_R, GPIO.OUT)
GPIO.setup(LED_G, GPIO.OUT)
def getDistance():
GPIO.output(TRIG, False)
time.sleep(1) #1초마다 값을 냄
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO) == 0:
pulse_start = time.time()
while GPIO.input(ECHO) == 1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance= round(pulse_duration*17150,2)
return distance
if __name__ == '__main__':
try:
while True:
distance_value = getDistance()
if distance_value > 2 and distance_value < 300:
print("Distance is %.2f cm"%distance_value)
GPIO.output(LED_G, GPIO.HIGH)
GPIO.output(LED_R, GPIO.LOW)
else:
print("Out of Range")
GPIO.output(LED_R, GPIO.HIGH)
GPIO.output(LED_G, GPIO.LOW)
except KeyboardInterrupt:
GPIO.output(LED_R, GPIO.LOW)
GPIO.output(LED_G, GPIO.LOW)
GPIO.cleanup()
- 가까우면 red, 멀어지면 green에 가까워지는 코드
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
TRIG = 23
ECHO = 24
LED_R = 13
LED_G = 19
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.setup(LED_R, GPIO.OUT)
GPIO.setup(LED_G, GPIO.OUT)
RED=GPIO.PWM(LED_R,100)
RED.start(0)
GREEN=GPIO.PWM(LED_G,100)
GREEN.start(0)
def getDistance():
GPIO.output(TRIG, False)
time.sleep(1) #1초마다 값을 냄
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO) == 0:
pulse_start = time.time()
while GPIO.input(ECHO) == 1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance= round(pulse_duration*17150,2)
return distance
if __name__ == '__main__':
try:
while True:
distance_value = getDistance()
if distance_value > 2 and distance_value < 50:
x= distance_value*2
print("Distance is %.2f cm"%distance_value)
RED.ChangeDutyCycle(101-x)
GREEN.ChangeDutyCycle(x)
else:
print("Out of Range")
except KeyboardInterrupt:
GPIO.output(LED_R, GPIO.LOW)
GPIO.output(LED_G, GPIO.LOW)
GPIO.cleanup()