?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | mpu6050 + 아두이노 나노

페이지 정보

작성자 ECE1 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일18-05-15 20:07 조회19회 댓글2건

본문

궁금한점이 있어서 질문 합니다.!!
지금 현재 GY-521를 사용하고 있고 아두이노 나노를 사용하고 있습니다.
현재 컴퓨터와 연결되어있는 것을 분리하고
외부전원 건전지(6V)를 인가하여 동작하고 싶은데
컴퓨터에서 소스 업로드후 USB를 제거하고 건전지 전원을 인가하면
나노에 불은 들어오는데 동작을 하지 않고 있습니다.
소스 문제인지 아니면 어떤게 부족한지 모르겠습니다.
쓰고 있는 소스 입니다.
#include<MPU6050.h>
#include<Wire.h>
#include<I2Cdev.h>

#define moter1 13
#define moter2 12
#define moter3 11
#define moter4 10
#define LED5 9
#define LED6 8
#define SOUND7 7
#define toDegree 180/PI
int16_t ax;
int16_t ay;
int16_t az;
int16_t gx;
int16_t gy;
int16_t gz;

int accelOffset = 200;
int accelReading = 0;
MPU6050 accelgyro;
float lastGyroX = 0;
float lastGyroY = 0;
float lastGyroZ = 0;
unsigned long lastTime;

void setup()
{

  pinMode(moter1,OUTPUT);
  pinMode(moter2,OUTPUT);
  pinMode(moter3,OUTPUT);
  pinMode(moter4,OUTPUT);
  pinMode(LED5,OUTPUT);
  pinMode(LED6,OUTPUT);
  pinMode(SOUND7,OUTPUT);
  Wire.begin();
  Serial.begin(9600);
 
  accelgyro.initialize();
  accelgyro.setXGyroOffset(49);
  accelgyro.setYGyroOffset(-19);
  accelgyro.setZGyroOffset(-16);
  accelgyro.setXAccelOffset(420);
  accelgyro.setYAccelOffset(-2451);
  accelgyro.setZAccelOffset(1595);
 
  lastTime = millis();
}


void loop()
{

  unsigned long newTime = millis();
  unsigned long dt = (newTime - lastTime)/1000;
  accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

  ax-= accelgyro.getXAccelOffset();
  ay-= accelgyro.getYAccelOffset();
  az-= accelgyro.getZAccelOffset();
  float angX = atan((ax) / (sqrt(pow(ay, 2) + pow(az, 2)))) *toDegree;
  float angY = atan((ay) / (sqrt(pow(ax, 2) + pow(az, 2)))) *toDegree;
  //float angZ = atan((sqrt(pow(ax, 2) + pow(ay, 2))) /(az)) * toDegree;

  float angGX = lastGyroX + ((gx-accelgyro.getXGyroOffset()) / 131)*dt;
  float angGY = lastGyroY + ((gy-accelgyro.getYGyroOffset()) / 131)*dt;
  //float angGZ = lastGyroZ + ((gz-accelgyro.getZGyroOffset()) / 131)*dt;
 
  float alpha = 0.96;
  float usefulX = alpha * angGX - (1-alpha)*angX;
  float usefulY = alpha * angGY - (1-alpha)*angY;
  //float usefulZ = angGZ;
 
  lastGyroX = usefulX;
  lastGyroY = usefulY;
 // lastGyroZ = ,,usefulZ;
float absY = usefulY;
if((absY>0&&absY<=20)||(absY<=0&&absY>=-20))
{
  digitalWrite(moter1,HIGH);
  digitalWrite(moter2,HIGH);
  digitalWrite(moter3,HIGH);
  digitalWrite(moter4,HIGH);
  digitalWrite(LED5,HIGH);
  digitalWrite(LED6,HIGH);
  digitalWrite(SOUND7,HIGH);
}
else if(absY>40||(absY>=-40&&absY<-20))
{
 
  digitalWrite(moter1,LOW);
  digitalWrite(moter2,LOW);
  digitalWrite(moter3,LOW);
  digitalWrite(moter4,LOW);
  digitalWrite(LED5,LOW);
  digitalWrite(LED6,LOW);
  digitalWrite(SOUND7,LOW);
}

/*else if((absY>20&&absY<=40)||(absY<-40))

  digitalWrite(moter1,HIGH);
  digitalWrite(moter2,HIGH);
  digitalWrite(moter3,HIGH);
  digitalWrite(moter4,HIGH);
  digitalWrite(LED5,HIGH);
  digitalWrite(LED6,HIGH);
  digitalWrite(SOUND7,HIGH);
}*/
  Serial.print(usefulX);
  Serial.print(",");
  Serial.print(usefulY);
 // Serial.print(",");
//  Serial.print(usefulZ);
  Serial.print("\n");

  lastTime = millis();
 
  }
컴퓨터 usb를 제거해도
소스 업로드 후 외부전원을 인가했을때 동작하는 방법을 알고싶습니다.
긴글 읽어주셔서 감사합니다.

댓글목록