У меня Raspberry Pi с 2 акселерометрами ADXL345, и я хочу максимизировать частоту дискретизации данных от них обоих. Когда я искал inte rnet, я был заинтригован тем, что на форуме 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()])
был наиболее вероятной причиной, по которой акселерометры понижают частоту дискретизации, тем самым снижая скорость чтения и задерживая сбор данных.
Он говорит:
Среднее время выполнения вышеуказанных трех строк кода составляет 0,002121 секунду. Означает ли это, что возможности чтения ограничены из-за i2 c и Raspberry pi, а не датчика? Или это из-за моего кода?
Мне тоже интересно тот же вопрос, но я собираюсь поставить его по-другому. Есть ли способ укоротить сегмент выше, чтобы он мог потенциально уменьшить задержку и увеличить частоту выборки данных? То есть есть ли способ сделать это в одну строку? Насколько я могу судить, не было ни ответа на этот вопрос этого парня, ни каких-либо убедительных, которые помогли мне.
Если нет способа ответить на этот вопрос, то я задаю этот вопрос: есть ли способ ускорить скорость выборки данных I2 C на Raspberry Pi 3 B +, или это так? можно тиражировать этот код для связи SPI? Я точно знаю, что SPI-связь быстрее, чем I2 C, но я не уверен, как реализовать это на Python в Raspberry Pi. Прошу прощения, если этот пост слишком длинный.