前提・実現したいこと
Pythonで、
「常にGPSモジュールからの緯度経度の情報を記録しながら、人感センサで人を検知したらLEDを点滅」
というプログラムを書いこうとしています。
発生している問題・エラーメッセージ
「GPSモジュールからの緯度経度の記録」と、「センサで人を検知したらLED点滅」という2つをそれぞれ別々に書くことはできたのですが、一つのプログラムにまとめるのに、どうしたらよいのか分かりません。
下の2種類のコードを、一つにまとめて書くにはどう書けばいいのか、ご教示ください。お願いします。
該当のソースコード①
Python3
1import serial 2import micropyGPS 3import threading 4import time 5import codecs 6 7gps = micropyGPS.MicropyGPS(9, 'dd') # MicroGPSオブジェクトを生成する。 8 # 引数はタイムゾーンの時差と出力フォーマット 9 10def rungps(): # GPSモジュールを読み、GPSオブジェクトを更新する 11 s = serial.Serial('/dev/serial0', 9600, timeout=10) 12 s.readline() # 最初の1行は中途半端なデーターが読めることがあるので、捨てる 13 while True: 14 sentence = s.readline().decode('utf-8', errors='ignore') # GPSデーターを読み、文字列に変換する 15 for x in sentence: # 読んだ文字列を解析してGPSオブジェクトにデーターを追加、更新する 16 gps.update(x) 17 18gpsthread = threading.Thread(target=rungps, args=()) # 上の関数を実行するスレッドを生成 19gpsthread.daemon = True 20gpsthread.start() # スレッドを起動 21 22while True: 23 if gps.clean_sentences > 5: # ちゃんとしたデーターがある程度たまったら出力する 24 h = gps.timestamp[0] if gps.timestamp[0] < 24 else gps.timestamp[0] - 24 25 with open('gps.txt', "a", encoding='utf-8')as f: 26 print(('%2d:%02d:%04.1f' % (h, gps.timestamp[1], gps.timestamp[2])), file=f) 27 print(('海抜: %f' % (gps.altitude)), file=f) 28 print(('緯度経度: %2.8f, %2.8f' % (gps.latitude[0], gps.longitude[0])), file=f) 29 print((''), file=f) 30 time.sleep(5.0)
該当のソースコード②
import threading import RPi.GPIO as GPIO import sys import os import shutil import time from time import sleep #PIN NO SET LED1 = 16 PIR = 11 GPIO.setmode(GPIO.BOARD) GPIO.setup(LED1, GPIO.OUT) GPIO.setup(PIR, GPIO.IN) #LED ON OFF Thread def ledmain(): global stopstr1 stopstr1 = " " while True: sleep(1) if ( stopstr1 != " "): GPIO.cleanup() sys.exit() #LED ON OFF if ( GPIO.input(PIR) == GPIO.HIGH): led01() #INTERRUPT Thread def stopinput(): global stopstr1 #led01 def led01(): GPIO.output(LED1, True) time.sleep(0.5) GPIO.output(LED1, False) time.sleep(0.5) #SET Thread th=threading.Thread(target=stopinput) th.start() th2=threading.Thread(target=ledmain) th2.start()
試したこと
一方のコードにもう一方を無理やりぶち込んだりしましたが、案の定うまくいきませんでした……
補足情報(FW/ツールのバージョンなど)
Raspberry Pi zero w の、Python3.5.3です。よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。