极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15523|回复: 3

弘毅版主给个ADXL345和ITG3200连接的电路图吧

[复制链接]
发表于 2012-2-20 16:36:22 | 显示全部楼层 |阅读模式

在这个帖子里面有面包版连接图,看不清楚啊
http://www.geek-workshop.com/forum.php?mod=viewthread&tid=236

嘛叫SPI接口,I2C又是神马东东,硬件小白伤不起啊伤不起

麻烦给个电路图研究学习一下,谢谢!
回复

使用道具 举报

发表于 2012-2-20 16:57:16 | 显示全部楼层
这两个模块因为都用的I2C接口,传感器的PCB板子上除了VCC和GND,还会有SCL,SDA两个接口。(PCB板子上对应的接口会标着。)

arduino板子的模拟5号口连接I2C模块的SCL,模拟4号口连接I2C模块的SDA口。

VCC与GND正常连接,主要不要接错电压,要使用3.3V。如果把5V接到3.3V上,就会烧了IC。

I2C模块之间是并联关系~

电源就不写了。。随便画一下SCL与SDA接法。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-21 11:00:50 | 显示全部楼层
本帖最后由 SS15 于 2012-2-21 11:04 编辑

原来想着ADXL345应该很简单,实际弄了一下才发现不是那么回事。345有I2C和SPI两种接法,I2C的SDO脚接不同的地方设备地址又不一样,简单说就是不同设计的模块需要不同的程序代码

简直就是坑害小白啊,不过总算搞定了。

谢谢版主



[code=cpp]#include "Wire.h"

#define DEVICE (0x53)                                        // ADXL345 device address when the SDO pin (12) is grounded
                                                                                // 推荐的I2C模式电气连接。器件的7位I2C地址是 0x53

void setup()
{
       
        Serial.begin(115200);                                // start serial for output
       
        Wire.begin();                                                // join i2c bus (address optional for master)

        // Wake up the accelerometer
        Wire.beginTransmission(DEVICE);                // Start talking to the ADXL345 accelerometer on the SEN-10183 board: http://www.sparkfun.com/products/10183
        Wire.send(0x2D);                                        // The address on the accel we want to set: POWER_CTL
        Wire.send(0x08);                                        // The value on the address: Measure(8), START MEASUREMENT
        Wire.endTransmission();
}

void loop()
{
  // Ask the accel to send us it's XYZ values
  Wire.beginTransmission(DEVICE);                // Start talking to the ADXL345 accelerometer on the SEN-10183 board: http://www.sparkfun.com/products/10183
  Wire.send(0x32);                                                // The address on the accel we want to read
  Wire.endTransmission();
  
  // Receive the XYZ values
  Wire.requestFrom(DEVICE, 6);                        // Request bytes from another device, Wire.requestFrom(address, quantity)
  byte data[6];
  for (int i=0;i<6 && Wire.available();i++)
  {
    data = Wire.receive();
  }
  Wire.endTransmission();

  // Parse them
  int x = data[0] | (((int)data[1])<<8);
  int y = data[2] | (((int)data[3])<<8);
  int z = data[4] | (((int)data[5])<<8);
  char buf[100];
  sprintf(buf, "x:%d, y:%d, z:%d\r\n", x,y,z);
  Serial.print(buf);

  delay(200);
}
[/code]
回复 支持 反对

使用道具 举报

发表于 2012-2-21 11:06:50 | 显示全部楼层
SS15 发表于 2012-2-21 11:00
原来想着ADXL345应该很简单,实际弄了一下才发现不是那么回事。345有I2C和SPI两种接法,I2C的SDO脚接不同的 ...

是滴,这个我当时也琢磨了好久。。自己焊模块的时候~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-10 05:55 , Processed in 0.040078 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表