mazda770 發表於 2016-5-26 14:25:50

Arduino due SDA1 SCL1

我現在要用Aduino due讀兩個IMU的訊號

目前有再SDA1 SCL1接兩個10K 歐姆的 拉提電阻
程式的部分如下
MPU6050 accelgyro1(0x68);
MPU6050 accelgyro2(0x69);

      Wire.setClock(1000000) ;                           
      Wire.begin();
      Wire1.setClock(1000000) ;
      Wire1.begin();
      Serial.begin(115200);

讀不到第二個IMU只讀得到第一個,求大神教學如何使用第二個I2C

超新手 發表於 2016-5-26 19:39:27

本帖最後由 超新手 於 2016-5-26 19:58 編輯

兩個 mpu 的 ad0 有接對嗎?
要接不一樣
一個 VCC, 一個 GND

mazda770 發表於 2016-5-27 18:25:23

我都沒接AD0欸,請問一下為什麼要接此角為呢 我都接4個而已   VCC GND SDA SCL

超新手 發表於 2016-5-27 19:53:59

其實你的程式有點奇怪又不太全
所以我只能用猜的
你應該是把兩個mpu都接到同一個 i2c 上
(wire), 然後用位址0x68, 0x69去讀
所以如果是 accelgyro1 讀不到,就把其中
一個mpu的 ad0 接地. 所以如果是 accelgyro2 讀不到,就把其中
一個mpu的 ad0 接 vcc

mazda770 發表於 2016-5-28 17:33:36

後來我的位址都用預設的 0x68去讀竟然讀得到,但不經讓我懷疑這樣的作法是否正確?

如果是用0x68 0x69去讀的話通常是 0x69讀不到,而且初始化就會出現錯誤了。所以這種情況要把ad0接到VCC嗎?為什麼要這樣做呢

超新手 發表於 2016-5-28 19:51:03

本帖最後由 超新手 於 2016-5-28 22:02 編輯

如果你都接到 wire 上
當然不對
i2c 因為共用同一條線路(sda scl)
所以線路上的裝置必須使用不同"位址"
來區分

除非分別接到wire 和 wire1
才是對的

mazda770 發表於 2016-5-29 09:55:32

所以""DUE""要用 0x68 0x69    連接到才算是對的!!!
我在試試看摟~謝謝大大

超新手 發表於 2016-5-29 13:17:23

應該是..如果要接到同一個 i2c 上
就要把位址錯過開
頁: [1]
查看完整版本: Arduino due SDA1 SCL1