Similar to this topic I only get 2 Hz if I want to read accelerometer, gyroscope and magnetometer. I am measuring as follows:
import time
from pynq.overlays.base import BaseOverlay
from pynq.lib.pmod import Grove_IMU
from pynq.lib.pmod import PMOD_GROVE_G3
base = BaseOverlay("base.bit")
mb_info = {'ip_name':'iop_pmoda/mb_bram_ctrl' ,'rst_name':'mb_iop_pmoda_reset'}
gr_pin = PMOD_GROVE_G3 # SDA on 3, SCL on 7 (PMOD A): https://pynq.readthedocs.io/en/v2.0/pynq_libr$
imu = Grove_IMU(mb_info, gr_pin)
imu.reset()
SampleFreq=30
delay=1/SampleFreq
while True:
start_time = time.time()
accl = imu.get_accl()
print("Accelerator: ", accl)
mag = imu.get_compass()
print("Magnetometer: ", mag)
gyro = imu.get_gyro()
print("Gyroscope: ", gyro)
elapsed_time = time.time() - start_time
print("Total time: ", elapsed_time, "\n")
time.sleep(delay)
And obtaining always:
Accelerator: [0.02, 0.02, 1.03]
Magnetometer: [0.88, 0.59, 5.86]
Gyroscope: [-0.43, 1.19, 0.66]
Total time: 0.43114256858825684
It would be nice to read at at least 30 Hz. @cathalmccabe @rock any idea?
Thank you.