πŸ“ λΌμ¦ˆλ² λ¦¬νŒŒμ΄μ™€ ADXL345 κ°€μ†λ„μ„Όμ„œ μ—°κ²°ν•˜κΈ°

μ‹ λ―Όμ£ΌΒ·2023λ…„ 12μ›” 30일
0

IoT

λͺ©λ‘ 보기
1/1

라즈베리파이 β€” ADXL345 회둜 μ—°κ²°


(( μ—°κ²° ν‘œ μΆ”κ°€ μž‘μ„± ν•„μš” ))



λΌμ¦ˆλ² λ¦¬νŒŒμ΄μ—μ„œ μ„ΈνŒ…ν•˜κΈ°


sudo apt-get update
sudo apt-get upgrade

λΌμ¦ˆλ² λ¦¬νŒŒμ΄μ—μ„œ Preferences β†’ Raspberry Pi Configuration β†’ Interfaces

β€œI2C”λ₯Ό Enable μ„€μ •ν•˜κ³  sudo reboot

sudo apt-get install python3-dev python3-pip python3-smbus i2c-tools -y

i2cdetect -y 0
β‡’ I2C λ²„μŠ€μ— μ—°κ²°λœ μž₯치의 μ£Όμ†Œ 확인



파이썬 μƒ˜ν”Œ μ½”λ“œ


import smbus
import time

bus = smbus.SMBus(1)  # I2C λ²„μŠ€ 번호 (라즈베리파이 2 이상일 λ•ŒλŠ” 1, 라즈베리파이 1일 λ•ŒλŠ” 0)
address = 0x53  # ADXL345 μ„Όμ„œμ˜ I2C μ£Όμ†Œ (i2cdetect -y 0둜 ν™•μΈν•œ μ£Όμ†Œ)

# ADXL345 μ΄ˆκΈ°ν™” ν•¨μˆ˜
def init_ADXL345():
    bus.write_byte_data(address, 0x2D, 0x08)

# 가속도 값을 μΈ‘μ •ν•˜λŠ” ν•¨μˆ˜
def measure_acc(adr):
    acc0 = bus.read_byte_data(address, adr)
    acc1 = bus.read_byte_data(address, adr + 1)
    acc = (acc1 << 8) + acc0
    # 2의 보수 λ³€ν™˜
    if acc > 0x1FF:
        acc = (65536 - acc) * -1
    return acc

try:
    init_ADXL345()
    while True:
        # x, y, z μΆ•μ˜ 가속도 값을 μ½μ–΄μ˜΄
        x_acc = measure_acc(0x32)  # X μΆ• λ ˆμ§€μŠ€ν„° μ£Όμ†Œ
        y_acc = measure_acc(0x34)  # Y μΆ• λ ˆμ§€μŠ€ν„° μ£Όμ†Œ
        z_acc = measure_acc(0x36)  # Z μΆ• λ ˆμ§€μŠ€ν„° μ£Όμ†Œ
        
        # μ½μ–΄μ˜¨ 가속도 값을 좜λ ₯
        print(f"X-Axis: {x_acc}, Y-Axis: {y_acc}, Z-Axis: {z_acc}")
        
        time.sleep(0.5)  # 0.5초 κ°„κ²©μœΌλ‘œ μΈ‘μ •
        
except KeyboardInterrupt:
    pass
profile
develop with JOOTT

0개의 λŒ“κΈ€