2017-11-22 3 views
0

Ich möchte den Timer verwenden, um die Ein/Aus-Dauer einer LED zu steuern. Ich habe den Code wie folgt geschrieben, aber er läuft nicht.wie Timer zu verwenden, um on-Dauer einer LED in Raspberry Pi zu steuern

def main(): 
    LED =27 
    GPIO.setup(LED, GPIO.OUT) 

    while (True): 
      now = datetime.datetime.now() 
      todayon = now.replace(hour = 17, minute=47, second =0, microsecond =0) 
      todayoff = now.replace(hour = 17, minute=48, second =0, microsecond =0) 
      turnon = now>todayon 
      turnoff = now>todayoff 

      if(turnon == True): 
        GPIO.output(LED, GPIO.HIGH) 
        time.sleep(1) 
        GPIO.output(LED, GPIO.LOW) 
        time.sleep(1) 

      if(turnoff == True): 
        GPIO.output(LED, GPIO.HIGH) 

Antwort

0

Wenn es nicht ausgeführt wird (haupt nichts zu tun), ist es wahrscheinlich, weil Sie nie in diesem Fall fügen Sie die folgenden Zeilen am Ende main

nennen:

if __name__ == '__main__': 
    main() 

Neben dass Sie GPIO einrichten müssen, um Portnummern oder Pinnummern zu verwenden. Mit GPIO.setmode(GPIO.BCM) stellen Sie den Modus auf Port-Nummern ein, sodass der GPIO-Port 27 als Ausgabe verwendet wird, wenn Sie GPIO.setup(LED, GPIO.OUT) anrufen.

Der komplette Skript sollte nun wie folgt aussehen:

#!/usr/bin/python 
import time 
import datetime 
import RP1.GPIO as GPIO 

def main(): 
    LED =27 
    GPIO.setmode(GPIO.BCM) 
    GPIO.setup(LED, GPIO.OUT) 

    while (True): 
     now = datetime.datetime.now() 
     todayon = now.replace(hour = 17, minute=47, second =0, microsecond =0) 
     todayoff = now.replace(hour = 17, minute=48, second =0, microsecond =0) 
     turnon = now>todayon and now<todayoff 
     turnoff = now>todayoff 

     if(turnon == True): 
       GPIO.output(LED, GPIO.HIGH) 
       time.sleep(1) 
       GPIO.output(LED, GPIO.LOW) 
       time.sleep(1) 

     if(turnoff == True): 
       GPIO.output(LED, GPIO.HIGH) 

if __name__ == '__main__': 
    main() 
+0

Ihnen danken. Aber es läuft falsch ausgeführt. –

+0

Ich möchte 17h47 blinkt und 17h48 das LED-Licht. 17h48 LED blinkt immer noch –

+0

Ich habe diesen Teil nicht beachtet, nachdem ich die anderen Fehler gefunden habe. Bitte überdenken Sie die Logik des Programms. Vor 17:48 ist nur "Turnon" wahr, nach 17:48 sind sowohl "Turnon" als auch "Turnoff" wahr. Sie können 'turnon' als wahr festlegen, wenn es später als' todayon' und früher als 'turnoff' ist. Ich bearbeite den Code, um Ihnen zu zeigen. – jps

Verwandte Themen