Ejemplo n.º 1
0
    def start(self):

        # change these as desired - they're the pins connected from the
        # SPI port on the ADC to the Cobbler
        SPICLK = RaspberryPi.SPI_CE1          #CLK
        SPIMISO = RaspberryPi.SPI_CE0        #DOUT
        SPIMOSI = RaspberryPi.SPI_SCLK        #DIN
        SPICS = RaspberryPi.SPI_MISO        #CS

         
        # set up the SPI interface pins
        GPIO.setup(SPIMOSI, GPIO.OUT)
        GPIO.setup(SPIMISO, GPIO.IN)
        GPIO.setup(SPICLK, GPIO.OUT)
        GPIO.setup(SPICS, GPIO.OUT)
         
        # 10k trim pot connected to adc #0
        potentiometer_adc = 0;
         
        last_read = 0       # this keeps track of the last potentiometer value
        tolerance = 5       # to keep from being jittery we'll only change
                            # volume when the pot has moved more than 5 'counts'

        buzzer = Buzzer()
        lcd = LCD() 
        lcd.Blink()
        printed = False
        try:
            while True:
                # we'll assume that the pot didn't move
                trim_pot_changed = False
         
                # read the analog pin
                trim_pot = self.readadc(potentiometer_adc, SPICLK, SPIMOSI, SPIMISO, SPICS)
                # how much has it changed since the last read?
                pot_adjust = abs(trim_pot - last_read)
         
                if DEBUG:
                        print "trim_pot:", trim_pot
                        print "pot_adjust:", pot_adjust
                        print "last_read", last_read
         
                if ( pot_adjust > tolerance ):
                       trim_pot_changed = True
         
                if DEBUG:
                        print "trim_pot_changed", trim_pot_changed
         
                if ( trim_pot_changed ):
                        value = trim_pot / 10.24           # convert 10bit adc0 (0-1024) trim pot read into 0-100 volume level
                        value = round(value)          # round out decimal value
                        value = int(value)            # cast volume as integer
                number = '';
                printedNumber = ''
                released = False
                if ( value != 60):
                    if (value >= 75 and value < 80):
                        number ='1'
                    elif (value >= 69 and value < 74):
                        number ='2'
                    elif (value >= 64 and value <= 70):
                        number ='3'
                    elif (value >= 0 and value <= 12):
                        number ='4'
                    elif (value >= 32 and value <= 37):
                        number ='5'
                    elif (value >= 38 and value <= 44):
                        number ='6'
                    elif (value >= 21 and value <= 26):
                        number ='7'
                    elif (value >= 83 and value <= 90):
                        number ='8'
                    elif (value >= 45 and value <= 51):
                        number ='9'
                    elif (value >= 54 and value <= 59):
                        number ='*'
                    elif (value >= 94 and value <= 100):
                        number ='0'
                    elif (value >= 50 and value <= 53):
                        number ='#'
                    else:
                        print "Dunno: ", value   
                
                if (value == 60):
                     released = True
                     printed = False

                if(number != printedNumber and not printed):
                    printedNumber = number
                    print number, value
                    lcd.message(number)
                    buzzer.beep(659, 125)
                    printed = True
                    time.sleep(0.1)

                    if(number == '*'):
                        self.typePassword = 1
                        self.password = ''
                    elif(number == '#' and self.typePassword == 1):
                        lcd.noBlink()
                        self.typePassword = 0
                        user = self.database.check_login(self.password)
                        print user

                        sleep_time = 1

                        if(user != 'Invalid Code'):
                            sleep_time = 5
                            self.led.show_status_light = 1
                            
                            system_status = self.database.system_status()
                            if(system_status == '1'):
                                self.sp.stop_timer()
                                self.sp.soundingAlarm = 0
                                self.database.system_disarm()
                                message = 'User '+user['first_name']+' '+user['last_name']+' disarmed the system'
                                print message
                                self.database.log(message)

                                print user['first_name']+' '+user['last_name']
                                user = '******'+user['first_name']+' '+user['last_name']
                            else:
                                self.database.system_arm()
                                user = user['first_name']+' '+user['last_name']+'\nArmed The System'
                                self.database.log(user)

                        time.sleep(0.5)
                        lcd.clear()
                        lcd.message(user)
                        self.message = ''
                        time.sleep(sleep_time)
                        lcd.clear()
                        lcd.Blink()
                    if(self.password == '1111'):
                        print 'play mario'
                        mario_thread = threading.Thread(target=self.play_song(),)
                        print 'die mario'
                        mario_thread.start()
                    elif(self.typePassword == 1):
                        if(number != '*'):
                            self.password += number

                time.sleep(0.01)
        except KeyboardInterrupt:
              GPIO.cleanup()
              print "\nKill"