0

Texas Instruments TM4C123G LaunchPad を使用して、ロボット プロジェクトの一環としてMPU-6050と接続しようとしています。Energia からこれにコードをアップロードし、シリアル モニターを使用して生データ出力を確認していますが、マイクロ コントローラーにアップロードして実行すると、次の出力しか受信しません。

Initialising I2C devices...

実行しようとしているコードは次のとおりです。

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

MPU6050 accelgyro;

void Setup_MPU6050()
{
  Wire.begin();
  Serial.println("Initialising I2C devices...");
  accelgyro.initialize();
  Serial.println("Testing device connections...");
  Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
}

void Update_MPU6050()
{
  int16_t ax, ay, az;
  int16_t gx, gy, gz;
  accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  Serial.print("i");Serial.print("\t");
  Serial.print(ax);Serial.print("\t");
  Serial.print(ay);Serial.print("\t");
  Serial.print(az);Serial.print("\t");
  Serial.print(gx);Serial.print("\t");
  Serial.print(gy);Serial.print("\t");
  Serial.println(gz);
  Serial.print("\n");
}

void setup()
{
  Serial.begin(115200);
  Setup_MPU6050();
}

void loop()
{
  Update_MPU6050();
}

ブレークアウト ボードのピンは、次のように Launchpad に接続されます。

VDD -> ピン 1 (3.3v)

GND -> ピン 12 (GND)

INT -> ピン 34 (PF0)

FSYNC -> なし

SCL -> ピン 13 (PD0)

SDA - > ピン 14 (PD1)

VIO -> なし

クロック -> なし

ASCL -> なし

ASDA -> なし

GitHubから MPU6050 および I2Cdev ライブラリを取得し、github.com/codebendercc/arduino-library-files/blob/master/libraries/Wire/Wire.hからWire ライブラリを取得しましたが、wire.begin( )またはaccelgyro.initialize()メソッドが正しく機能していませんか? 私はこの言語でのプログラミングに関しては比較的初心者ですが、申請中の奨学金のためにロボットを作成するという野心的な仕事に取り組んでいるので、この分野での支援に感謝します.

4

1 に答える 1

0

私はちょうどあなたと同じ質問に会いました。ここにリンクの 説明を入力してください。ここ にリンクの説明を入力してください。これを参照し、Wire.begin() の前にいくつかのコードを追加しました。このよう に、ここに画像の説明を入力 してからアップロードして実行すると、完全に機能します。また、DMP を使用しない場合は INT ピンを接続できませんが、DMP を使用する場合は INT ピンを接続する必要があります。

私はそれを説明しようとします。なぜ 2 行のコードを追加する必要があるのでしょうか。ライブラリは Arduino のものですが、Energia はほとんどの場合 Arduino プログラミングと互換性がありますが、常にではありません。したがって、何かを明示的に称賛する必要があります。

そして、なぜ中断に注意を払う必要があるのでしょうか。DMPを使うときは使うので、INT端子を接続しないと正常に動作しません。

于 2017-03-24T10:23:29.080 に答える