- 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()

 

 

 

+ Recent posts