소스 뷰어
print( "Hello ...", flush=1 )
print( "Initiating MPU6050 ...", flush=1 )
from MPU6050 import init_mpu6050
from time import sleep
mpu, packet_size, fifo_buffer = init_mpu6050()
print( "Done.\n" )
g = 9.8 # gravity acceleration (m/s^2)
accel_coeff = g/(2**14)
admp_coeff = accel_coeff*2
gyro_coeff = 250 / 2**15
duration = 0.1
count = 0
while 1 :
if not mpu.isreadyFIFO(packet_size):
# Check if FIFO data are ready to use...
continue
pass
sleep( duration )
count += 1
### The full range of accelerometer is set to [-2g, +2g]. ###
### The transformations in this code are based on this range ###
# raw acceleration
accel = mpu.get_acceleration()
ax = accel.x * accel_coeff
ay = accel.y * accel_coeff
az = accel.z * accel_coeff
# DMP acceleration (less noisy acceleration - based on fusion)
fifo_buffer = mpu.get_FIFO_bytes(packet_size) # get all the DMP data here
accel_dmp = mpu.DMP_get_acceleration_int16(fifo_buffer)
ax_dmp = accel_dmp.x * admp_coeff
ay_dmp = accel_dmp.y * admp_coeff
az_dmp = accel_dmp.z * admp_coeff
# raw gyro (full range: [-250, +250]) (unit: degree / second)
gyro = mpu.get_rotation()
gx = gyro.x * gyro_coeff
gy = gyro.y * gyro_coeff
gz = gyro.z * gyro_coeff
print( f'[{count:4d}] IMU Accl ', end="" )
print( f' x: {ax/g:9.5f}', end="" )
print( f', y: {ay/g:9.5f}', end="" )
print( f', z: {az/g:9.5f} g(m/s2)' )
print( f'[{count:4d}] IMU Admp ', end="" )
print( f' x: {ax_dmp/g:9.5f}', end="" )
print( f', y: {ay_dmp/g:9.5f}', end="" )
print( f', z: {az_dmp/g:9.5f} g(m/s2)' )
print( f'[{count:4d}] IMU Gyro ', end="" )
print( f' x: {gx:9.5f}', end="" )
print( f', y: {gy:9.5f}', end= "" )
print( f', z: {gz:9.5f} °/s' )
print( "-"*66 )
pass
print( "Good bye!" )