ADXL345(3軸加速度センサー)を読み取る

ADXL345を読む

ADXL345(3軸加速度センサー)を読み取ります。

ADXL345(3軸加速度センサー)

デバイスがどれくらい傾けられたか・動いたかを検知します。

配線図

実際の配線

MicroPythonプログラムprogram

from machine import Pin, I2C

import time
import ustruct
# 本体内LED をセットアップ
led= machine.Pin('LED', machine.Pin.OUT)

# Constants
ADXL345_ADDRESS = 0x53
ADXL345_POWER_CTL = 0x2D
ADXL345_DATA_FORMAT = 0x31
ADXL345_DATAX0 = 0x32
 
# Initialize I2C
i2c = I2C(0, sda=Pin(8), scl=Pin(9), freq=400000)
 
# Initialize ADXL345
def init_adxl345():
    i2c.writeto_mem(ADXL345_ADDRESS, ADXL345_POWER_CTL, bytearray([0x08]))  # Set bit 3 to 1 to enable measurement mode
    i2c.writeto_mem(ADXL345_ADDRESS, ADXL345_DATA_FORMAT, bytearray([0x0B]))  # Set data format to full resolution, +/- 16g
 
# Read acceleration data
def read_accel_data():
    data = i2c.readfrom_mem(ADXL345_ADDRESS, ADXL345_DATAX0, 6)
    x, y, z = ustruct.unpack('<3h', data)
    return x, y, z
 
# Main loop
init_adxl345()
while True:
    

    x, y, z = read_accel_data()
    print("X: {}, Y: {}, Z: {}".format(x, y, z))
    if x > 10:
        print ('ok')
        led.high()
        time.sleep( 1 )
    else:
        led.low()
        time.sleep( 1 )
        
    print('x',x)
    
    time.sleep(1)
Xの値が10より大きい時に本体LEDを光らせるようにしました。
その他、コンソール出力の値を変化させています。

実行

コンソールにx,y,zの値が表示されています。
Xが10以上になるとLEDが点灯し10以下になると消灯します。

自由研究

テンテン
テンテン

X,Y,Zの値に応じてLEDを光らせてみましよう。