2017-11-11 3 views
0

私は7つのボタン、RFIDリーダー、およびラズベリーパイを備えた週プランナーシステムを構築しています。情報記憶のためのリストを使用する

私はRFIDタグからの活動とプッシュボタンからの日を取得します。私は、1日が入力されたとき、またはアクティビティが与えられたときに音を鳴らしている。

どのような日に予定されている活動を保存したいですか。 例:月曜日 - 水泳、コーディング、医師。

特定の日にどのような活動が計画されているかを知ることができます。

今、私は日と活動を選ぶためのコードを持っていますが、後で使用するために情報を格納する方法がわかりません。

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 

、あなたはjsonシンプルなためではなく、任意のデータ構造、簡単な表についてcsv、キー/値ストアのshelvesqlite3用を検討するかもしれません完全なSQLリレーショナルデータベース

関連する問題