看板 ASM 關於我們 聯絡資訊
小弟新手想學學看Arduino 連接三軸加速度計讀出數值 用的是MMA8652FC 3-Axis 12-bit Digital Accelerometer Module DIP-12 size 這塊板子,但網路上找不到用這塊板子的範例 所以我試者用別人的教學範例CODE 下去修改,但改了後數值都一直跑出-1的狀態,也不清楚是哪出了問題 想請教人我是哪裡出錯了不知是CODE的問題還是接腳的問題 SDA連結A4腳位 SCL連A5腳位 下面是CODE #include <Wire.h> int I2C_Address = 0x1D >> 1; int X0, X1, Y0, Y1, Z1, Z0; float X,Y,Z; void setup(){ Serial.begin(9600); Serial.println("Start : \n------------------------------------"); Wire.begin(); setReg(0x2B, 0x09); } void loop(){ X0 = getData(0x01); X1 = getData(0x02); X = ((X1 << 8) + X0) / 256.0; Y0 = getData(0x03); Y1 = getData(0x04); Y = ((Y1 << 8) + Y0) / 256.0; Z0 = getData(0x05); Z1 = getData(0x06); Z = ((Z1 << 8) + Z0) / 256.0; Serial.print("X= "); Serial.print(X); Serial.print(" Y= "); Serial.print(Y); Serial.print(" Z= "); Serial.println(Z); delay(500); } void setReg(int reg, int data){ Wire.beginTransmission(I2C_Address); Wire.write(reg); Wire.write(data); Wire.endTransmission(); } int getData(int reg){ Wire.beginTransmission(I2C_Address); Wire.write(reg); Wire.endTransmission(); Wire.requestFrom(I2C_Address,1); if(Wire.available()<=1){ return Wire.read(); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.114.140.253 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1446642233.A.766.html ※ 編輯: ks89213 (120.114.140.253), 11/04/2015 21:05:05
chuegou: 一個軸-1.另外兩軸0? 11/05 00:55
三個軸都是-1 ※ 編輯: ks89213 (120.114.140.253), 11/05/2015 11:06:11
BallLee15: 會不會是電壓關係 arduino的i2c是5v 11/06 17:18
BallLee15: 三軸3.3v 11/06 17:18
BallLee15: 我也是初學者int I2C_Address = 0x1D >> 1;改int I2C_A 11/06 17:22
BallLee15: ddress = 0x1D; 看看能不能 11/06 17:22
一樣沒有辦法 ※ 編輯: ks89213 (120.114.140.55), 11/16/2015 20:07:32
easypro: 你有enable 三軸嗎? 11/25 21:05
請問是甚麼意思 ※ 編輯: ks89213 (120.114.140.253), 11/26/2015 10:33:53
escorpion: 改成(float)((X1<<8)+X0)/256.0看看,我不知道整數除 12/04 11:23
escorpion: 以浮點數是不是會自動變浮點數 12/04 11:23
escorpion: 如果有示波器的話看一下SDA pin的情況是不是正常溝通 12/04 11:25
escorpion: 對了,SCL 跟SDA直接接在A4跟A5不一定能work,最好還是 12/04 11:27
escorpion: 外加一個pull high resistor 12/04 11:27