В то время как истинная петля питона
Я делаю датчик парковки с rasberry pi и python это код :
import RPi.GPIO as GPIO import time #from picamera import PiCamera from time import sleep from gpiozero import MotionSensor import smtplib sender = '*****@gmail.com' reciever = '*****@gmail.com' def BlueLED (): #Blue LED Function GPIO.output(27, GPIO.HIGH) time.sleep(3) GPIO.output(27, GPIO.LOW) def RedLED (): #Red LED Function GPIO.output(22,GPIO.HIGH) time.sleep(3) GPIO.output(22, GPIO.LOW) def Buzzer (): #Buzzer Function GPIO.output(17, GPIO. HIGH) time.sleep(3) GPIO.output(17, GPIO.LOW) def email(sender,reciever,msg): try : server = smtplib.SMTP('smtp.gmail.com',587) server.ehlo() server.starttls() server.login(sender,'******') server.sendmail(sender,reciever,msg) server.close() print('Email sent!') except : print('Error') try : GPIO.setmode(GPIO.BCM) #camera = PiCamera() pir = MotionSensor(4) GPIO.setwarnings(False) GPIO.setup(27, GPIO.OUT) #blueLED GPIO.setup(22, GPIO.OUT) #redLED GPIO.setup(17, GPIO.OUT) #buzzer GPIO.setup(18, GPIO.OUT) #tempsensor GPIO.setup(21, GPIO.IN, pull_up_down = GPIO.PUD_UP) #entry button count = 0 while True : if (pir.motion_detected): print('Motion Detected') #Calling the buzzer function #Buzzer() #The content that is going to be sent via email msg = """Subject : Car Park (Picture) """ email(sender,reciever,msg) print('\nPlease press the button for the gate to open') while True : if(GPIO.input(21) == False): if (count < 5): BlueLED() print('\nThere are ',(5-count), ' parking spaces empty ') else : RedLED() print('\nSorry but the parking is full') count = count + 1 except Exception as ex : print('Error occured',ex)
Моя проблема заключается в том, что первый цикл while не работает, то есть если датчик движения срабатывает, ничего не происходит, но вы можете нажать кнопку, и количество увеличится. Я предполагаю, что есть простое решение этой проблемы, но оно, похоже, не приходит на ум. Буду рад вашей помощи, Спасибо
Что я уже пробовал:
Попробовал сначала нажать на кнопку и она заработала но была не так логична правильна на мой взгляд
Richard MacCutchan
Что "не работать" значит? Мы не можем видеть ваш экран, поэтому понятия не имеем, что здесь происходит или какую кнопку вы нажимаете.
0x01AA
Я не знаю python, но для меня это выглядит так, как будто вы должны разорвать внутренний цикл после RedLED(). Только предположение :)
[no name]
х