背景:Arduino101板子可以测量姿态数据:heading(航向角)、pitch(俯仰角)、roll(侧翻角),利用Python读取串口数据并保存到电脑里。
打开串口监视器,如下图:
代码:
# 读取arduino串口数据并保存
import serial
import pandas as pd
# sets up serial connection (make sure baud rate is correct - matches Arduino)
# 设置串口号和波特率和Arduino匹配
ser = serial.Serial('com6', 9600)
# a为储存数据的列表
a = []
# count为次数,采集多少次就停止
count = 0
while count != 30: # 30可以根据需要设置,while(True):代表一直读下去
# reads until it gets a carriage return. MAKE SURE THERE IS A CARRIAGE RETURN OR IT READS FOREVER
data = ser.readline() # 按行读取串口数据进来
data = data.decode() # 读进来的数据是bytes形式,需要转化为字符串格式
data = data[13:30] # 数据格式是'Orientation: 180.87 2.16 -3.86\r\n',取第13到29为字符出来就是-->'180.87 2.16 -3.86'
data = data.split(" ") # 以空格为分隔符分隔字符串-->['180.87', '2.16', '-3.86']
count += 1
data = list(map(float, data)) # 把字符串转化为数字-->[180.87, 2.16, -3.86]
print(data)
a.append(data) # 添加到列表里
df = pd.DataFrame(a) # 转化为df格式数据
# print(df)
df.to_excel('D:\桌面文件\\bp\\angle.xls', header=False, index=False)
代码来自Github,略作修改。