タイトルにもあるように、PythonでArduinoから取得した値をリアルタイムで処理したいです。
具体的には、Arduinoから送られてくるデータをPythonの方で5秒おきに取得して、一定時間毎にそのデータをデータベースの方に保存したいです。
現時点でのPythonのコードは以下のようになっていて、Arduinoが起動している間はずっとwhileループを回るようになっています。
適当に変数iなどを設置して、ループの回数に応じて何回かに一回データベースに保存すればどうにかなるとは思うのですが、これはプログラム的に大丈夫でしょうか。
リアルタイム処理をしたことがないのでご教授いただけるとありがたいです。
Python
1# coding:utf-8 2import time 3import serial 4import sys 5import matplotlib.pyplot as plt 6import re 7import datetime 8 9 10if __name__ == "__main__": 11 ser = serial.Serial() 12 ser.baudrate = 9600 # ArduinoのSerial.beginで指定した値 13 ser.timeout = 0 # タイムアウトの時間 14 ser.port = "COM6" # Arduinoのポート番号 15 16 # 開いてみる 17 try: 18 ser.open() 19 print("open " + ser.port) 20 except: 21 print("can't open" + ser.port) 22 sys.exit(0) 23 24 i = 0 25 DATASETS = { 26 'TIME': [], 27 'CO2': [], 28 } 29 regex = re.compile('\d+.?\d+') 30 31 # ちゃんと開けていたらループに入る 32 while ser.is_open: 33 s = ser.readline(100).decode() 34 if s != "": 35 s2 = regex.findall(s) 36 37 now_time = str(datetime.datetime.now().time())[:8] 38 DATASETS['TIME'].append(now_time) 39 DATASETS['CO2'].append(s2) 40 41 print('DATE: ', now_time) 42 print('CO2: ', s2, '[ppm]') 43 44 time.sleep(5.0) # 5秒待つ 45 46 print("serial connection closed") 47
回答2件
あなたの回答
tips
プレビュー