2016-09-03 9 views
1

コードを壊してしまい、txtファイルの日付と色でLEDが点灯します。日付が正しい場合は、LEDが点灯しますが、正しい時間が経過するとLEDが消えませんが、次の日付まではまだ光っています。 なぜ、ledsがオフにならないのか、問題はどこですか?助けてください、私はほとんどすべてを試しました。コードデバッグ、なぜLEDは動作後も消灯しませんか?

import sys 
import time 
import datetime 
import RPi.GPIO as GPIO 
import SDL_DS1307 

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



LED_R = 17 
LED_G = 27 
LED_B = 22 


GPIO.setup(17, GPIO.OUT) 
GPIO.setup(27, GPIO.OUT) 
GPIO.setup(22, GPIO.OUT) 


filename = time.strftime("%Y-%m-%d%H:%M:%SRTCTest") + ".txt" 
starttime = datetime.datetime.utcnow() 

ds1307 = SDL_DS1307.SDL_DS1307(1, 0x68) 
ds1307.write_now() 

while True: 
    currenttime = datetime.datetime.utcnow() 
    deltatime = currenttime - starttime 
    data=time.strftime("%Y"+"%m"+"%d"+"%H"+"%M") 
    with open('data.txt') as f: 
      for line in f: 
        parts=line.split()        
        if parts[0]<=(data)<=parts[1]: 
          if parts[2]=='raudona': 
            GPIO.putput(LED_R, False) 
            GPIO.putput(LED_G, True) 
            GPIO.putput(LED_B, True) 
          elif parts[2]=='zalia': 
            GPIO.putput(LED_R, True) 
            GPIO.putput(LED_G, False) 
            GPIO.putput(LED_B, True) 
          elif parts[2]=='melyna': 
            GPIO.putput(LED_R, True) 
            GPIO.putput(LED_G, True) 
            GPIO.putput(LED_B, False) 
          elif parts[2]=='geltona': 
            GPIO.putput(LED_R, False) 
            GPIO.putput(LED_G, True) 
            GPIO.putput(LED_B, False) 
          elif parts[2]=='zydra': 
            GPIO.putput(LED_R, True) 
            GPIO.putput(LED_G, False) 
            GPIO.putput(LED_B, False) 
          elif parts[2]=='violetine': 
            GPIO.putput(LED_R, False) 
            GPIO.putput(LED_G, False) 
            GPIO.putput(LED_B, True) 
          elif parts[2]=='balta': 
            GPIO.putput(LED_R, False) 
            GPIO.putput(LED_G, False) 
            GPIO.putput(LED_B, False) 

      time.sleep(10.0) 

答えて

0

私はあなたの問題に対する答えを見つけたと信じています。さて、あなたがすることがここにあります。 THIS IS A THOROUGH GUIDE ON DEBUGGING A BLINKING LED

あなたが経験している問題の解決に役立つ情報が含まれているので、ガイドを参照してください。

あなたはラズベリーパイを見るには、デバイスの非常に興味深いとユニークな作品

2

for-else constructを使用するには、どのような素敵な機会です。

LEDが点灯する指示がある場合は、タスクが完了しているため、LEDをオンにしてからループから抜けてください。

この場合、指示は見つかりませんでした。つまり、breakは実行されませんでした。ループにelseスイートを追加し、すべてのLEDをオフにします。

  for line in f: 
       parts=line.split() 
       if parts[0]<=(data)<=parts[1]: 
        if parts[2]=='raudona': 
         GPIO.putput(LED_R, False) 
         GPIO.putput(LED_G, True) 
         GPIO.putput(LED_B, True) 
         break 
        elif parts[2]=='zalia': 
         GPIO.putput(LED_R, True) 
         GPIO.putput(LED_G, False) 
         GPIO.putput(LED_B, True) 
         break 
        # elif ..... 
      else: 
       GPIO.putput(LED_R, False) 
       GPIO.putput(LED_G, False) 
       GPIO.putput(LED_B, False) 

(コードテストしていない、すべての私のラズベリーが庭にある)

+0

は "休憩" のように思えるが、助けどうもありがとうございました:) '他: GPIO.output(LED_R、false)を。 .. コードにaddetしましたが、ここに入れて忘れてしまったようです。:) – Vettehra

+0

@Vettehraあなたのプロジェクトを楽しんでください。繰り返しコードがたくさんある場合は、コードを改善することができます。 – VPfB

関連する問題