Robofun 機器人論壇

標題: Arduino due SDA1 SCL1 [打印本頁]

作者: mazda770    時間: 2016-5-26 14:25
標題: 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
本帖最後由 超新手 於 2016-5-26 19:58 編輯

兩個 mpu 的 ad0 有接對嗎?
要接不一樣
一個 VCC, 一個 GND
作者: mazda770    時間: 2016-5-27 18:25
我都沒接AD0欸,請問一下為什麼要接此角為呢 我都接4個而已   VCC GND SDA SCL
作者: 超新手    時間: 2016-5-27 19:53
其實你的程式有點奇怪又不太全
所以我只能用猜的
你應該是把兩個mpu都接到同一個 i2c 上
(wire), 然後用位址0x68, 0x69去讀
所以如果是 accelgyro1 讀不到,就把其中
一個mpu的 ad0 接地. 所以如果是 accelgyro2 讀不到,就把其中
一個mpu的 ad0 接 vcc
作者: mazda770    時間: 2016-5-28 17:33
後來我的位址都用預設的 0x68去讀竟然讀得到,但不經讓我懷疑這樣的作法是否正確?

如果是用0x68 0x69去讀的話通常是 0x69讀不到,而且初始化就會出現錯誤了。所以這種情況要把ad0接到VCC嗎?  為什麼要這樣做呢
作者: 超新手    時間: 2016-5-28 19:51
本帖最後由 超新手 於 2016-5-28 22:02 編輯

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

除非分別接到wire 和 wire1
才是對的
作者: mazda770    時間: 2016-5-29 09:55
所以""DUE""要用 0x68 0x69    連接到才算是對的!!!
我在試試看摟~謝謝大大
作者: 超新手    時間: 2016-5-29 13:17
應該是..如果要接到同一個 i2c 上
就要把位址錯過開




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2