반응형
1. 연결~
아두이노 |
MPU-6050 |
VCC------------------ GND----------------- SCL------------------ SDA----------------- |
VCC GND 3 2 |
2. 기본 설명
기본적으로 MPU6050에 연결 해야할 전압은 2.3~3.4 입니다. 그런데 아두이노에 연결되는 전압은 5V 이지만 MPU6050 에서 빨간 동그라미 부분이 5->3.3V로 바꾸는 역활을 합니다. 또한 핀 9에 AD0가 0이면 1101000(0x68) 인 주소 값이 되고 1이면 1101001(0x69) 이 됩니다~ 저는 0x68 주소 값으로 진행하게 될겁입니다. |
3. 간단한 통신 확인 소스
간단한 예제는 아두이노 홈페이지 가면 모두 제공하고 있습니다.
https://playground.arduino.cc/Main/MPU-6050
중간 부터 보면
Short example sketch
여기 예제에서 Serial.begin(9600);-->>>> Serial.begin(115200); 로 바꾸면 됨
|
4. 소스 해석
- #include<Wire.h> // I2C 통신을 이용하기 위한 헤더파일
- const int MPU_addr=0x68; // // AD0를 0으로 함으로써 0x68의 주소값을 가진다.
- int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ; // 7가지 의 값을 받기 위한 변수
- void setup(){
- Wire.begin(); // I2C 통신 시작
- Wire.beginTransmission(MPU_addr); //주소를 전송
- Wire.write(0x6B); // PWR_MGMT_1 register //0x6B의 레지스트를 0으로 함으로써 Sleep에서 깨움
- Wire.write(0); // set to zero (wakes up the MPU-6050)
- Wire.endTransmission(true); //전송 끝
- Serial.begin(115200);
- }
- void loop(){
- Wire.beginTransmission(MPU_addr); //주소를 전송으로써 통신 시작
- Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H) //0x3B 시작
- Wire.endTransmission(false); //전송 계속
- Wire.requestFrom(MPU_addr,14,true); // request a total of 14 registers //0x3B 부터 14 바이트 전송 요청
- AcX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
- AcY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
- AcZ=Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
- Tmp=Wire.read()<<8|Wire.read(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
- GyX=Wire.read()<<8|Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
- GyY=Wire.read()<<8|Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
- GyZ=Wire.read()<<8|Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
- 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); //equation for temperature in degrees C from datasheet
- Serial.print(" | GyX = "); Serial.print(GyX);
- Serial.print(" | GyY = "); Serial.print(GyY);
- Serial.print(" | GyZ = "); Serial.println(GyZ);
- delay(333);
- }
반응형
'프로젝트 > 하드웨어' 카테고리의 다른 글
4. 드론 어플 연결 msp (Multiwii Serial Protocol) (4) | 2017.05.09 |
---|---|
3. HM-10 블루투스 테스트(2) (0) | 2017.04.20 |
2. HM-10 블루투스 테스트(1) (0) | 2017.04.19 |
1. 시작~ (0) | 2017.04.06 |