【发布时间】:2020-01-26 22:07:06
【问题描述】:
我有一个带有 2 个 ADXL345 加速度计的 Raspberry Pi,我想最大化它们的数据采样率。当我在互联网上搜索时,我很想在 Raspberry Pi 论坛 (https://www.raspberrypi.org/forums/viewtopic.php?t=254552) 上找到有人显示此代码,他在此示例中使用了两个加速度计:
import time
import Adafruit_ADXL345
accel1 = Adafruit_ADXL345.ADXL345()
accel2 = Adafruit_ADXL345.ADXL345(address=0x1d, busnum=1)
print('Printing X, Y, Z axis values, press Ctrl-C to quit...')
cordinates = []
import time
start_time = time.time()
NUM_OF_SEC_TO_RUN = 10
while time.time()<=start_time+NUM_OF_SEC_TO_RUN:
x1, y1, z1 = accel1.read()
x2, y2, z2 = accel2.read()
cordinates.append([x1,y1,z1,x2,y2,z2,time.time()])
import csv
with open('02.txt', 'a') as csvFile:
writer = csv.writer(csvFile)
writer.writerows(cordinates)
在帖子的后面,他说那段
x1, y1, z1 = accel1.read()
x2, y2, z2 = accel2.read()
cordinates.append([x1,y1,z1,x2,y2,z2,time.time()])
这是加速度计进行下采样的最可能原因,从而降低了读取速率并延迟了数据采集。
他说,
以上3行代码的平均执行时间为0.002121秒。这是否意味着由于 i2c 和 Raspberry pi 而不是传感器,读取能力受到限制?还是因为我的代码?
我也想知道同样的问题,但我会提出不同的问题。有没有办法使上面的段缩短,从而有可能减少延迟并提高数据采样率?也就是说,有没有办法让它变成一条线? 据我所知,没有对这个人的帖子做出回应,也没有任何对我有帮助的决定性的帖子。
如果没有办法回答这个问题,那么我提出这个问题:有没有办法加快树莓派 3 B+ 上 I2C 的数据采样速度,或者是否可以复制此代码用于SPI通讯?我知道 SPI 通信比 I2C 更快,但我不确定如何在 Raspberry Pi 中的 Python 上实现它。如果这篇文章太长,我很抱歉。
【问题讨论】:
标签: python raspberry-pi3 delay i2c downsampling