0

これは私のコードです:

#include <Wire.h>
#include <I2Cdev.h>
#include <HMC5883L.h>
#include <MPU6050.h>

#include "Arduino.h"
void setup();
void loop();

MPU6050 accelgyro;
HMC5883L mag;

int16_t mx, my, mz;

void setup() {
    Wire.begin();
    accelgyro.initialize();
    accelgyro.setI2CBypassEnabled(true);
    Serial.begin(9600);

    // initialize device
    Serial.println("Initializing I2C devices...");
    mag.initialize();

    // verify connection
    Serial.println("Testing device connections...");
    Serial.println(mag.testConnection() ? "HMC5883L connection successful" : "HMC5883L connection failed");

}

void loop() {
    mag.getHeading(&mx, &my, &mz);

    Serial.print("mag:\t");
    Serial.print(mx); Serial.print("\t");
    Serial.print(my); Serial.print("\t");
    Serial.print(mz); Serial.print("\t");

    float heading = atan2(my, mx);
    if(heading < 0)
    heading += 2 * M_PI;
    Serial.print("heading:\t");
    Serial.println(heading * 180/M_PI);

}

Arduino IDE で動作します。以下は Atmel Studio 6 の警告 (2 つの初期化されていない警告と I2Cdev ライブラリによって生成された 4 つの警告) で、エラーはありません。

warning 5   **'progBuffer' may be used uninitialized in this function [-Wuninitialized]**   D:/Program Files (x86)/Arduino/libraries/MPU6050/MPU6050.cpp    2971    14  HMC
warning 6   **'progBuffer' may be used uninitialized in this function [-Wuninitialized]**   D:/Program Files (x86)/Arduino/libraries/MPU6050/MPU6050.cpp    3076    101 HMC
warning 4   **#warning - Timeout detection (some Wire requests block forever) [-Wcpp]** D:/Program Files (x86)/Arduino/libraries/I2Cdev/I2Cdev.cpp  67  14  HMC
warning 2   **#warning Arduino IDE v1.0.1+ with I2CDEV_BUILTIN_FASTWIRE implementation is recommended. [-Wcpp]**    D:/Program Files (x86)/Arduino/libraries/I2Cdev/I2Cdev.cpp  65  14  HMC
warning 3   **#warning This I2Cdev implementation does not support: [-Wcpp]**   D:/Program Files (x86)/Arduino/libraries/I2Cdev/I2Cdev.cpp  66  14  HMC
warning 1   **#warning Using current Arduino IDE with Wire library is functionally limiting. [-Wcpp]**  D:/Program Files (x86)/Arduino/libraries/I2Cdev/I2Cdev.cpp  64  14  HMC

出力は次のとおりです。

collect2: ld returned 1 exit status
make: *** [HMC.elf] Error 1

誰が私を助けることができます?どうもありがとう!!

4

1 に答える 1

0

警告から、コンパイラは、使用している環境内から一部のコード/ライブラリを利用できないことを伝えていると思います。したがって、コードは正常にコンパイルされますが、対応する静的ライブラリが見つからないため、リンカは失敗します。

したがって、もしit can work on Arduino IDE、それに固執するだけです(あなたが私たちに言わなかった何らかの理由がない限り)。

これ以上リンカー エラーが発生していないことを確認しますか? これらは何らかのファイルに記録されている可能性があります。確認してください。

于 2014-09-29T07:06:09.360 に答える