Я хотел бы построить секундомер для моей трассы Каррера, которую я построил немного больше.
Поэтому я купил Raspberry Pi 3 с дополнительным 7-дюймовым сенсорным экраном и отдельными модулями для запуска.
Все отлично работает индивидуально.
Теперь я нашел в сети отличный секундомер, который я тоже использовал. Работает действительно отлично.
В другом скрипте, который я написал сам, запуск с помощью gpios также фантастический.
Теперь я хочу объединить оба и потерпеть неудачу.
У кого-нибудь есть идея или предложенное решение, где моя ошибка?
Вот мой код
#!/usr/bin/python
import tkinter as tk
import RPi.GPIO as GPIO
import time
GPIO_TRIGGER_PIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_TRIGGER_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setwarnings(False)
def update_timeText():
if (state):
global timer
timer[2] += 1
if (timer[2] >= 100):
timer[2] = 0
timer[1] += 1
if (timer[1] >= 60):
timer[0] += 1
timer[1] = 0
timeString = pattern.format(timer[0], timer[1], timer[2])
timeText.configure(text=timeString)
root.after(10, update_timeText)
def start():
global state
state = True
print('Pressed Start')
def stop():
global state
state = False
print('Pressed Stop')
def reset():
global timer
timer = [0, 0, 0]
timeText.configure(text='00:00:00')
print('Pressed Reset')
while GPIO.input(GPIO_TRIGGER_PIN) == True:
if GPIO.input(GPIO_TRIGGER_PIN):
print('CAR DETECTED')
time.sleep(0.1)
state = False
# BULDING TKinter GUI
root = tk.Tk()
root.wm_title('Stopwatch')
timer = [0, 0, 0]
pattern = '{0:02d}:{1:02d}:{2:02d}'
timeText = tk.Label(root, text="00:00:00", font=("Helvetica", 150))
timeText.pack()
startButton = tk.Button(root, text='Start', command=start)
startButton.pack()
stopButton = tk.Button(root, text='Stop', command=stop)
stopButton.pack()
resetButton = tk.Button(root, text='Reset', command=reset)
resetButton.pack()
update_timeText()
root.mainloop()
В настоящее время я получаю триггер в консоли как вывод "CAR DETECTED". Тем не менее, я не получаю панель TKinter.
Если я удалю
while GPIO.input(GPIO_TRIGGER_PIN) == True:
if GPIO.input(GPIO_TRIGGER_PIN):
print('CAR DETECTED')
time.sleep(0.1)
тогда дисплей появляется и работает. Без запуска.
Если я положу все это, я получу также панель, но это также не вызывает ничего больше.
Есть идеи?
Спасибо за помощь