2015-01-21 4 views
1

Python을 사용하여 LCD 화면 코드를 쓰고 있는데 LCD의 버튼을 누를 때까지 깜박이는 'Press SELECT'메시지를 표시하고 싶습니다.파이썬에서 수면을 사용하지 않고 얼마 후에 코드를 실행 하시겠습니까?

문제는 프로그램이 절전 상태 인 동안 사용자가 단추를 누르는 것을 등록하지 않기 때문에 메시지를 인쇄 할 때 단추를 정확히 눌러야한다는 것입니다.

수면을 사용하지 않고 어떻게해야합니까?

내가 사용하는 코드입니다 :

#lcd.is_pressed(LCD.SELECT) - checks if button is pressed 
#lcd.message - prints text on LCD 
#lcd.clear - removes all text from LCD 

while not lcd.is_pressed(LCD.SELECT): 
     lcd.message ('Press Select') 
     sleep(2) 
     lcd.clear() 
     sleep(2) 
+0

경과 시간을 측정하고 경과 한 시간을 기준으로 메시지를 표시하거나 지우도록 결정해야 할 수 있습니다. – njzk2

+0

신호를 사용할 수 있습니까? 사용할 수있는 경우 처리기와 함께 'alarm()'호출을 사용하는 것이 훨씬 쉽습니다. – VHarisop

답변

0

작은 조각으로 시간을 분할;

i = 0 
while not lcd.is_pressed(LCD.SELECT): 
    i = (i + 1) % 400 
    if i == 0: 
     lcd.message("Press Select") 
    elif i == 200: 
     lcd.clear() 
    sleep(0.01) 
+0

감사합니다. 이것은 내가 필요한 것입니다. –

0

이 시도 :

import time 

delayTime=2 #In seconds 
dummyVariable=is_pressed(LCD.Select) 
while not dummyVariable: 
    lcd.message('Press Select') 
    dummyVariable=softWait(delayTime) 
    lcd.clear() 
    dummyVariable=softWait(delayTime) 

def softWait(delayTime) 
    t0 = time.time() 
    t1 = time.time() 
    while t0-t1<delayTime: 
     dummyVariable=is_pressed(LCD.Select) 
     t1=time.time() 
     if dummyVariable: 
      return True 
    return False 

is_pressed 난 정말이를 테스트 할 수 없습니다 작동 방식을 모른 채이 버튼을 초마다 백을 확인합니다. 하지만 가장 큰 문제는 버튼 클릭이 time.time() 또는 lcd.message() 호출을 반환하는 데 걸리는 시간보다 빠르면 버튼이 현재 클릭되는 경우 is_pressed가 True를 등록하는 경우입니다. 정말 빠릅니다.