Pi код не работает - датчик парковки задним ходом - PullRequest
0 голосов
/ 19 марта 2020
    import RPi.GPIO as GPIO
import time

GPIO.setwarnings(False)

GPIO.cleanup()

GPIO.setmode(GPIO.BCM)

TRIG = 4

ECHO = 18

GREEN = 17

YELLOW = 27

RED = 22

GPIO.setup(TRIG,GPIO.OUT)

GPIO.setup(ECHO,GPIO.IN)

GPIO.setup(GREEN,GPIO.OUT)

GPIO.setup(YELLOW,GPIO.OUT)

GPIO.setup(RED,GPIO.OUT)

def green_light():

GPIO.output(GREEN, GPIO.HIGH)

GPIO.output(YELLOW, GPIO.LOW)

GPIO.output(RED, GPIO.LOW)

def yellow_light():

GPIO.output(GREEN, GPIO.LOW)

GPIO.output(YELLOW, GPIO.HIGH)

GPIO.output(RED, GPIO.LOW)

def red_light(): GPIO.output(GREEN, GPIO.LOW)

GPIO.output(YELLOW, GPIO.LOW)

GPIO.output(RED, GPIO.HIGH)

def get_distance():

GPIO.output(TRIG, True)

time.sleep(0.00001)

GPIO.output(TRIG, False)

while GPIO.input(ECHO) == False: start = time.time()

while GPIO.input(ECHO) == True: end = time.time()

signal_time = end-start

distance = signal_time / 0.000058

return distance

while True:

distance = get_distance()

time.sleep(0.05)

print(distance)

if distance >= 25:

green_light()

elif 25 > distance > 10:

yellow_light()

elif distance <= 5:

red_light()

Этот код был предоставлен мне как часть этого проекта: https://www.instructables.com/id/Raspberry-Pi-Park-Sensor/

, когда я подключаю все и правильно устанавливаю код с отступом, я получаю "расстояние возврата" «внешняя функция. Может кто-нибудь объяснить, что со мной происходит? иногда код даже не запускается. Я попытался сделать отступ для обратного расстояния et c. но это все еще не работает. Может кто-нибудь, пожалуйста, покажите, как правильно отобразить этот код в python, и мне интересно, может ли globalvariable сыграть в эту же задачу

1 Ответ

1 голос
/ 30 марта 2020

Как сказал Клаус, идентификация важна, я не могу проверить ее сейчас, но я хочу, чтобы вы отладили файл, чтобы увидеть, где появляется ошибка.

import RPi.GPIO as GPIO
import time

GPIO.setwarnings(False)
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)

TRIG = 4
ECHO = 18
GREEN = 17
YELLOW = 27
RED = 22

GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.setup(GREEN, GPIO.OUT)
GPIO.setup(YELLOW, GPIO.OUT)
GPIO.setup(RED, GPIO.OUT)

def green_light():
    GPIO.output(GREEN, True)
    GPIO.output(YELLOW, False)
    GPIO.output(RED, False)


def yellow_light():
    GPIO.output(GREEN, False)
    GPIO.output(YELLOW, True)
    GPIO.output(RED, False)


def red_light():
    GPIO.output(GREEN, False)
    GPIO.output(YELLOW, False)
    GPIO.output(RED, True)


def get_distance():
    GPIO.output(TRIG, True)
    time.sleep(0.00001)
    GPIO.output(TRIG, False)
    while GPIO.input(ECHO) == False:
        start = time.time()

    while GPIO.input(ECHO) == True:
        end = time.time()

    signal_time = end-start
    distance = signal_time / 0.000058
    return distance

while True:
    distance = get_distance()
    time.sleep(0.05)
    print(distance)
    if distance >= 25:
        green_light()
    elif 25 > distance > 10:
        yellow_light()
    elif distance <= 5:
        red_light()
...