Kaynağa Gözat

'final_new_keypad_bad.py' löschen

Yang Zhang 5 yıl önce
ebeveyn
işleme
78af47a7b5
1 değiştirilmiş dosya ile 0 ekleme ve 185 silme
  1. 0 185
      final_new_keypad_bad.py

+ 0 - 185
final_new_keypad_bad.py

@@ -1,185 +0,0 @@
-import time
-import Adafruit_BBIO.GPIO as GPIO
-import Adafruit_BBIO.PWM as PWM
-
-class Keypad():
-    def __init__(self):
-        # CONSTANTS 
-        self.KEYPAD = [
-            ["1","2","3"],
-            ["4","5","6"],
-            ["7","8","9"],
-            ["*","0","#"]
-        ]
-
-        self.ROW         = ["P8_8", "P8_10", "P8_12", "P8_14"]
-        self.COLUMN      = ["P8_16", "P8_17", "P8_18"]
-        self.PASS = "1234"
-
-        for r in self.ROW:
-            GPIO.setup(r, GPIO.OUT)
-        for c in self.COLUMN:
-            GPIO.setup(c, GPIO.IN)
-     
-    def getKey(self):
-        for i in self.ROW:
-            GPIO.output(i, GPIO.HIGH)
-        for c in self.COLUMN:
-            GPIO.add_event_detect(c, GPIO.RISING)
-
-        time.sleep(1)
-        print("pls enter key")
-        while True:
-            for c in self.COLUMN:
-                if GPIO.event_detected(c):
-                    key = self.identifyKey(c)
-                    if key:
-                        for c in self.COLUMN:
-                            GPIO.remove_event_detect(c)
-                        return key
-            print("refreshing")
-            time.sleep(0.1)
-                
-    def identifyKey(self, pin):
-        print("identifyKey called")
-        col = COLUMN.index(pin)
-        key = None
-
-        # GPIO.output(self.ROW[0], GPIO.HIGH)
-        GPIO.output(self.ROW[1], GPIO.LOW)
-        GPIO.output(self.ROW[2], GPIO.LOW)
-        GPIO.output(self.ROW[3], GPIO.LOW)
-        if GPIO.input(pin):
-            key=self.KEYPAD[0][col]
-
-        GPIO.output(self.ROW[0], GPIO.LOW)
-        GPIO.output(self.ROW[1], GPIO.HIGH)
-        # GPIO.output(self.ROW[2], GPIO.LOW)
-        # GPIO.output(self.ROW[3], GPIO.LOW)
-        if GPIO.input(pin):
-            key=KEYPAD[1][col]
-
-
-        # GPIO.output(self.ROW[0], GPIO.LOW)
-        GPIO.output(self.ROW[1], GPIO.LOW)
-        GPIO.output(self.ROW[2], GPIO.HIGH)
-        # GPIO.output(self.ROW[3], GPIO.LOW)
-        if GPIO.input(pin):
-            key=KEYPAD[2][col]
-
-        # GPIO.output(self.ROW[0], GPIO.LOW)
-        # GPIO.output(self.ROW[1], GPIO.LOW)
-        GPIO.output(self.ROW[2], GPIO.LOW)
-        GPIO.output(self.ROW[3], GPIO.HIGH)
-        if GPIO.input(pin):
-            key=KEYPAD[3][col]
-
-        GPIO.output(self.ROW[0], GPIO.HIGH)
-        GPIO.output(self.ROW[1], GPIO.HIGH)
-        GPIO.output(self.ROW[2], GPIO.HIGH)
-        GPIO.output(self.ROW[3], GPIO.HIGH)
-        
-        if key:
-            return key
-         
-    def verify_pass(self, pass_entered):
-        return pass_entered == self.PASS
-
-class IR:
-    def __init__(self, pin, rot, laut, keypad):
-        self.pin = pin
-        self.rot = rot
-        self.laut = laut
-        self.keypad = keypad
-        GPIO.setup(self.pin, GPIO.IN)
-        GPIO.add_event_detect(self.pin, GPIO.RISING, callback=self.cb_ir)
-
-    def __del__(self):
-        print("IR {} deleted.".format(self.pin))
-        GPIO.remove_event_detect(self.pin)
-
-    def cb_ir(self, pin):
-        print("cb_ir called.")
-        self.rot.start()
-        time.sleep(1)
-        self.laut.start()
-        time.sleep(1)
-        print("pls enter pass to stop alarm")
-        start_time = time.time()
-        pass_entered = ""
-        digit = None
-        while True:
-            while not digit and time.time()-start_time < 50:
-                digit = self.keypad.getKey()
-            if digit:
-                pass_entered = pass_entered + digit
-            print("{} digit(s) already entered".format(len(pass_entered)))
-            digit = None
-            if len(pass_entered) >= 4:
-                if self.keypad.verify_pass(pass_entered[-4:]):
-                    print("alarm cancelled")
-                    time.sleep(1)
-                    self.rot.stop()
-                    time.sleep(1)
-                    self.laut.stop()
-                    time.sleep(1)
-                else:
-                    print("wrong password")
-                    pass_entered = ""
-            if time.time() - start_time > 50:
-                print("took too long, reset")
-                pass_entered = ""
-            if time.time() - start_time > 60:
-                print("60s passed, quit for test")
-                time.sleep(1)
-                self.rot.stop()
-                time.sleep(1)
-                self.laut.stop()
-                time.sleep(1)
-                break
-
-class LAUT:
-    def __init__(self, pin, pwm_perc=50, pwm_freq=10000):
-        self.pin = pin
-        self.pwm_perc = pwm_perc
-        self.pwm_freq = pwm_freq
-        GPIO.setup(self.pin, GPIO.OUT)
-
-    def __del__(self):
-        print("PWM {} deleted.".format(self.pin))
-
-    def start(self):
-        PWM.start(self.pin, self.pwm_perc, self.pwm_freq)
-
-    def stop(self):
-        PWM.stop(self.pin)
-
-
-class ROT():
-    def __init__(self, pin, pwm_perc=50, pwm_freq=1):
-        self.pin = pin
-        self.pwm_perc = pwm_perc
-        self.pwm_freq = pwm_freq
-
-    def __del__(self):
-        print("ROT {} deleted.".format(self.pin))
-
-    def start(self):
-        PWM.start(self.pin, self.pwm_perc, self.pwm_freq)
-    
-    def stop(self):
-        PWM.stop(self.pin)
-
-if __name__ == "__main__":
-    rot = ROT("P9_14")
-    laut = LAUT("P8_13")
-    keypad = Keypad()
-    ir = IR("P9_12", rot, laut, keypad)
-    try:
-        while True:
-            print("...")
-            time.sleep(2)
-    except Exception as e:
-        GPIO.cleanup()
-        PWM.cleanup()
-        print(e)