2017-11-11 6 views
0

나는 7 개의 버튼, RFID 판독기 및 나무 딸기 파이가있는 1 주일 계획 시스템을 구축 중입니다.정보 저장을위한 목록 사용

푸시 버튼을 사용하여 RFID 태그 및 요일로부터 활동을 가져옵니다. 하루가 시작되거나 활동이 주어지면 나는 소리를냅니다.

어떤 활동을 계획했는지 저장하고 싶습니다. 예 : 월요일 - 수영, 코딩, 의사.

특정 요일에 어떤 활동이 계획되어 있는지 읽을 수 있도록.

지금 당장에는 하루와 활동을 선택하는 코드가 있지만 나중에 사용할 수 있도록 정보를 저장하는 방법이 확실하지 않습니다.

import mercury 
import time 
import RPi.GPIO as GPIO 
import pygame 

#Setting up the RFID reader 
reader = mercury.Reader("tmr:///dev/ttyUSB0") 
reader.set_region("EU3") 
reader.set_read_plan([1], "GEN2") 
#Setting up the GPIO pins for the 7 push buttons 
GPIO.setmode(GPIO.BOARD) 
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Pin 22 = GPIO25 
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Pin 24 = GPIO8 
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Pin 26 = GPIO7 
GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Pin 32 = GPIO12 
GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Pin 36 = GPIO16 
GPIO.setup(38, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Pin 38 = GPIO20 
GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Pin 40 = GPIO21 

#Enabling pygame to play sounds 
pygame.init() 

#Declaration of the RFID tags used in this example. 
tag1 = 'E2004005730702602190360B' 
tag2 = 'E20040057307026421903619' 
tag3 = 'E20040057307026221803410' 
tag4 = 'E2004005730702662180341E' 
tag5 = 'E20040057307027021803420' 
#Setting what sound files to use and the paths 
mandaglyd = pygame.mixer.Sound('/home/pi/Desktop/Mandag.wav') 
tirsdaglyd = pygame.mixer.Sound('/home/pi/Desktop/Tirsdag.wav') 
onsdaglyd = pygame.mixer.Sound('/home/pi/Desktop.onsdag.wav') 
torsdaglyd = pygame.mixer.Sound('/home/pi/Desktop/torsdag.wav') 
fredaglyd = pygame.mixer.Sound('/home/pi/Desktop/fredag.wav') 
lordaglyd = pygame.mixer.Sound('/home/pi/Desktop/lordag.wav') 
sondaglyd = pygame.mixer.Sound('/home/pi/Desktop/sondag.wav') 


def setDay(): 
    while True: 
     in22 = GPIO.input(22) 
     in24 = GPIO.input(24) 
     in26 = GPIO.input(26) 
     in32 = GPIO.input(32) 
     in36 = GPIO.input(36) 
     in38 = GPIO.input(38) 
     in40 = GPIO.input(40) 
     if in22 == False: 
       print('Monday') 
       mandaglyd.play() 
       time.sleep(2) 
       break 
     if in24 == False: 
       print('Tuesday') 
       tirsdaglyd.play() 
       time.sleep(2) 
       break 
     if in26 == False: 
       print('Onsdag') 
       onsdaglyd.play() 
       time.sleep(2) 
       break 
     if in32 == False: 
       print('Torsdag') 
       torsdaglyd.play() 
       time.sleep(2) 
       break 
     if in36 == False: 
       print('Fredag') 
       fredaglyd.play() 
       time.sleep(2) 
       break 
     if in38 == False: 
       print('Lordag') 
       lordaglyd.play() 
       time.sleep(2) 
       break 
     if in40 == False: 
       print('Sondag') 
       sondaglyd.play() 
       time.sleep(2) 
       break    
def setActivity(): 
    while True: 
     a = repr(reader.read()) 
     print (a) 
     if tag1 in a: 
       print('tag1') 
       time.sleep(0.2) 
       break 
     if tag2 in a: 
       print('tag2') 
       time.sleep(0.2) 
       break 
     if tag3 in a: 
       print('tag3') 
       time.sleep(0.2) 
       break 
     if tag4 in a: 
       print('tag4') 
       time.sleep(0.2) 
       break 
     if tag5 in a: 
       print('tag5') 
       time.sleep(0.2) 
       break 
     time.sleep(0.2) 

if __name__ == "__main__": 
    setActivity() 
    setDay() 

매일 목록을 작성한 다음 목록에 활동을 추가해야합니까? 그런 다음 목록에서 활동을 검색하고 검색에서 발견 된 활동을 기반으로 사운드를 재생할 수 있습니까? 그렇게하는 것이 더 나은 방법일까요?

답변

1

개체 지향 프로그래밍에 대해 배우는 것이 좋습니다. 프로그램에 저장하는 데이터를 나타내는 클래스를 만드는 것을 고려해야합니다. 예를 들어, 활동 이름과 요일을 저장하는 Activity 클래스를 만들 수 있습니다.

변수는 메모리에만 저장됩니다. 이 데이터는 프로그램이 종료되거나 기기가 꺼지면 사라집니다. 프로그램 실행 사이에 영구적으로 데이터를 저장하려면 파일에 저장해야합니다.

2

목록은 비슷한 방식으로 다루려는 대상에 적합합니다. 예를 들어 : (프로그램의 단일 실행 이상) 장기 저장을위한

def setDay(): 
    while True: 
     for pin, day,  sound  in [ 
      (22, 'Monday', mandaglyd), 
      (24, 'Tuesday', tirsdaglyd), 
      (26, 'Onsdag', onsdaglyd), 
      (32, 'Torsdag', torsdaglyd), 
      (36, 'Fredag', fredaglyd), 
      (38, 'Lordag', lordaglyd), 
      (40, 'Sondag', sondaglyd), 
     ]: 
      if GPIO.input(pin) == False: 
       print(day) 
       sound.play() 
       time.sleep(2) 
       return 

, 당신은 키/값 저장소 나 sqlite3에 대한 간단한 테이블에 대한 간단하지만, 임의의 데이터 구조에 대한 json, csv, shelve을 고려해 볼 수 있습니다 전체 SQL 관계형 데이터베이스.