드디어 완료~!



#include <Wire.h>
const int MPU_addr = 0x68;
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
void setup() {
// put your setup code here, to run once:
Wire.begin();
Wire.beginTransmission(MPU_addr);
Wire.write(0x68);
Wire.write(0);
Wire.endTransmission(true);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Wire.beginTransmission(MPU_addr);
Wire.write(0x3B);
Wire.endTransmission(false);
Wire.requestFrom(MPU_addr,14,true);
AcX=Wire.read()<<8|Wire.read();
AcY=Wire.read()<<8|Wire.read();
AcZ=Wire.read()<<8|Wire.read();
Tmp=Wire.read()<<8|Wire.read();
GyX=Wire.read()<<8|Wire.read();
GyY=Wire.read()<<8|Wire.read();
GyZ=Wire.read()<<8|Wire.read();
Serial.print("AcX = "); Serial.print(AcX);
Serial.print(" | AcY = "); Serial.print(AcY);
Serial.print(" | AcZ = "); Serial.print(AcZ);
Serial.print(" | Tmp = "); Serial.print(Tmp/340.00+36.53);
Serial.print(" | GyX = "); Serial.print(GyX);
Serial.print(" | GyY = "); Serial.print(GyY);
Serial.print(" | GyZ = "); Serial.println(GyZ);
delay(333);
}
고군분투 한 보람이 있구마잉
우선 MPU6050이 잘 작동 되는지 확인하기 위해 해당 센서만 사용하여 값을 측정하는 프로그램이다.
이 코드는 Arduino IDE를 사용하여 MPU6050 모듈과 통신하여 가속도계와 자이로스코프 센서 데이터를 읽고 시리얼 모니터에 출력하는 간단한 스케치입니다. MPU6050은 3축 가속도계와 3축 자이로스코프를 통합한 6축 모션 추적 센서입니다.
라이브러리 및 변수 선언:
#include <Wire.h>: I2C 통신을 위한 Wire 라이브러리를 포함시킵니다.
const int MPU_addr = 0x68;: MPU6050 모듈의 I2C 주소를 저장하는 변수를 선언합니다.
int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ;: 가속도계와 자이로스코프 값들을 저장할 변수들을 선언합니다.
setup() 함수:
Wire.begin();: I2C 통신을 초기화합니다.
Wire.beginTransmission(MPU_addr);: MPU6050 모듈과 I2C 통신을 시작합니다.
Wire.write(0x68);: MPU6050 레지스터 주소 0x68에 데이터를 쓰도록 요청합니다. 이는 MPU6050 내부 레지스터 주소 설정 명령어입니다.
Wire.write(0);: MPU6050 레지스터 설정 값으로 0을 보냅니다. 이는 MPU6050 내부 레지스터 0x68에 0을 설정하는 명령어입니다.
Wire.endTransmission(true);: I2C 통신을 종료하고, true를 전달하여 전송 후 중지합니다.
Serial.begin(9600);: 시리얼 통신을 초기화하고, 시리얼 모니터와의 통신 속도를 9600 bps로 설정합니다.
loop() 함수:
이 함수는 계속 반복적으로 실행됩니다.
Wire.beginTransmission(MPU_addr);: MPU6050 모듈과 I2C 통신을 시작합니다.
Wire.write(0x3B);: MPU6050 레지스터 주소 0x3B에 데이터를 쓰도록 요청합니다. 이는 가속도계와 자이로스코프 데이터를 읽을 시작 주소를 지정하는 명령어입니다.
Wire.endTransmission(false);: I2C 통신을 종료하지 않고, false를 전달하여 전송 후 계속 통신 상태를 유지합니다.
Wire.requestFrom(MPU_addr, 14, true);: 지정된 I2C 주소에서 14바이트 데이터를 읽어오도록 요청합니다. 이는 가속도계와 자이로스코프 데이터를 읽는 명령어입니다.
가속도계와 자이로스코프 데이터를 2바이트씩 읽어와 각각 AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ 변수에 저장합니다.
Serial.print(): 시리얼 모니터에 데이터를 출력합니다.
delay(333);: 333ms의 딜레이를 추가하여 일정한 주기로 센서 데이터를 읽고 출력합니다.
이렇게 MPU6050 센서에서 읽어온 가속도계(AcX, AcY, AcZ), 온도(Tmp), 자이로스코프(GyX, GyY, GyZ)의 값을 시리얼 모니터에서 확인할 수 있습니다.