极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 弘毅

arduino学习笔记12 - ADXL345加速度传感器实验

  [复制链接]
发表于 2016-1-18 09:34:53 | 显示全部楼层
wing 发表于 2011-9-27 15:29
最近入手ADXL345试了下,用的是LZ程序发现有点小问题,无论什么角度  Y==Z重来都没变过.
本来以为芯片Z轴坏了 ...

层主你太有钱啦
回复 支持 反对

使用道具 举报

发表于 2016-5-7 10:49:48 | 显示全部楼层
“通过测量由重力引起的加速度,你可以计算出设备相对于水平面的倾斜角度”,请知道楼主问这一块功能怎么实现啊?我需要显示屏上直接显示角度
回复 支持 反对

使用道具 举报

发表于 2016-9-25 18:31:33 | 显示全部楼层
我和97楼的同学一样,液晶屏上显示的全部是xyz=-1.00的问题,而且不会变化,请问一下是什么地方出现了错误吗?新手刚刚学习arduino,不太会。
回复 支持 反对

使用道具 举报

发表于 2016-9-25 23:46:47 | 显示全部楼层
支持,赞一个,这个很有用。
回复 支持 反对

使用道具 举报

发表于 2016-10-16 11:38:12 | 显示全部楼层
论坛怎么发图片?
回复 支持 反对

使用道具 举报

发表于 2016-10-18 08:56:42 | 显示全部楼层
弘毅,老师,我想问下这个和MPU6050相比,控制方便不?MPU6050读取的数据太复杂了,卡尔曼滤波搞不懂,我就想读取角度变化,例如手指上装传感器,实际的模型可以模拟手指的弯曲动作等,或者从一个点到另一个点的位置变化,不知道这个芯片能不能
回复 支持 反对

使用道具 举报

发表于 2017-7-10 17:56:21 | 显示全部楼层
幻生幻灭 发表于 2011-9-10 23:06
支持! 最近入手一个MMA7455L,IIC通讯整得迷糊了,网上也没找到案例。  

为什么我输到屏幕上X  Y  Z 的值都是-1.。。
用的是8574AT驱动的1602液晶屏
#include <Wire.h>  //调用arduino自带的I2C库
#include <LiquidCrystal_I2C.h>
#define Register_ID 0
#define Register_2D 0x2D
#define Register_X0 0x32
#define Register_X1 0x33
#define Register_Y0 0x34
#define Register_Y1 0x35
#define Register_Z0 0x36
#define Register_Z1 0x37

LiquidCrystal_I2C lcd(0x3F,16,2);
int ADXAddress = 0x3F>>1;  //转换为7位地址
int reading = 0;
int val = 0;
int X0,X1,X_out;
int Y0,Y1,Y_out;
int Z1,Z0,Z_out;
double Xg,Yg,Zg;

void setup()
{
  Serial.begin(9600);
  lcd.init();
  delay(100);
  Wire.begin();  //初始化I2C
  delay(100);
  Wire.beginTransmission(ADXAddress);
  Wire.write(Register_2D);
  Wire.write(8);
  Wire.endTransmission();
}

void loop()
{
  
    Wire.beginTransmission(ADXAddress);
    Wire.write(Register_X0);
    Wire.write(Register_X1);
    Wire.endTransmission();
    Wire.requestFrom(ADXAddress,2);
    if(Wire.available()<=2);
    {
      X0 = Wire.read();
      X1 = Wire.read();
      X1 = X1<<8;
      X_out = X0+X1;
      Serial.println( X_out);
    }
   
    Wire.beginTransmission(ADXAddress);
    Wire.write(Register_Y0);
    Wire.write(Register_Y1);
    Wire.endTransmission();
    Wire.requestFrom(ADXAddress,2);
    if(Wire.available()<=2);
    {
      Y0 = Wire.read();
      Y1 = Wire.read();
      Y1 = Y1<<8;
      Y_out = Y0+Y1;
       Serial.println( Y_out);
    }
   
    Wire.beginTransmission(ADXAddress);
    Wire.write(Register_Z0);
    Wire.write(Register_Z1);
    Wire.endTransmission();
    Wire.requestFrom(ADXAddress,2);
    if(Wire.available()<=2);
    {
      Z0 = Wire.read();
      Z1 = Wire.read();
      Z1 = Z1<<8;
      Z_out = Z0+Z1;
       Serial.println( Z_out);
    }
   
  
  Xg = X_out/256.00;//把输出结果转换为重力加速度g,精确到小数点后2位。
  Yg = Y_out/256.00;
  Zg = Z_out/256.00;
  lcd.clear();
  lcd.backlight();
  lcd.print("X="); //使屏幕显示文字X=
  lcd.print(Xg);
  lcd.setCursor(8, 0);
  lcd.print("Y=");
  lcd.print(Yg);
  lcd.setCursor(0, 1);
  lcd.print("Z=");
  lcd.print(Zg);
  delay(300);  //延时0.3秒,刷新频率这里进行调整
  
}
回复 支持 反对

使用道具 举报

发表于 2018-2-5 13:33:02 | 显示全部楼层
从楼主另一个帖子改的。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2018-4-8 16:59:47 | 显示全部楼层
大佬,为什么我的显示屏上为都-1.00  而且怎么动,值都不改变??
回复 支持 反对

使用道具 举报

发表于 2018-4-9 15:12:13 | 显示全部楼层
taoye 发表于 2018-4-8 16:59
大佬,为什么我的显示屏上为都-1.00  而且怎么动,值都不改变??

你这个问题解决了没有
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 16:36 , Processed in 0.045626 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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