03模块-accelerometer【设备加速度传感器】

accelerometer模块主要用于管理设备加速度传感器。

用于获取设备加速度信息,包括x(屏幕水平方向)、y(垂直屏幕水平方向)、z(垂直屏幕平面方向)三个方向的加速度信息。

 

该模块有三个方法  

1、getCurrentAcceleration: 获取当前设备的加速度信息 

2、watchAcceleration: 监听设备加速度变化信息 

3、clearWatch: 关闭监听设备加速度信息 


getCurrentAcceleration方法可以获取当前设备的加速度信息

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>心得</title>
<script type="text/javascript">
//监听plusready事件  
document.addEventListener("plusready",xhrs);//系统准备好后执行 自定义函数xhrs
function xhrs(){
plus.accelerometer.getCurrentAcceleration(
function(xhrs_a){
alert( "加速信息\nx:" + xhrs_a.xAxis + "\ny:" + xhrs_a.yAxis + "\nz:" + xhrs_a.zAxis );
},
function(){
alert("当前设备无法获取加速信息');
}
);
}
//getCurrentAcceleration(成功获取加速信息的回调函数有返回值,获取加速信息失败时调用的函数)
</script>
</head>
<body>1
</body>
</html>

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>心得</title>
<script type="text/javascript">
//监听plusready事件  
var xhrs_wid='';//外部声明一个变量用于给 setTimeout使用,不然xhrs_wid就是addEventListener函数内的局部变量了
document.addEventListener("plusready",xhrs);//系统准备好后执行 自定义函数xhrs
function xhrs(){
xhrs_wid =  plus.accelerometer.watchAcceleration(
function(xhrs_a){
document.getElementById("aa").innerHTML = Math.random();//
},function(){document.getElementById("aa").innerHTML = '无法获取加速信息';},
{frequency:2000}//2秒一次的执行该函数,默认为500
);
}//watchAcceleration方法调用完后会有一个返回值
//watchAcceleration(成功获取加速信息的回调函数有参数【必须】,获取加速信息失败时调用的函数【可选】, {frequency:执行评率毫秒计时} )
//watchAcceleration类似于setInterval 
setTimeout(function(){plus.accelerometer.clearWatch(xhrs_wid)},5000);//5秒后关闭加速计算
</script>
</head>
<body>
<div id="aa">1321331231</div>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>心得</title>
<script type="text/javascript">
document.addEventListener("plusready",xhrs);//监听plusready事件  
function xhrs(){ 
plus.accelerometer.watchAcceleration(
function(xhrs_a){
document.getElementById("aa").innerHTML = "x轴方向的加速度="+xhrs_a.xAxis;
},
function(){document.getElementById("aa").innerHTML = '无法获取加速信息';},
{frequency:2000}
);
}
</script>
</head>
<body>
<div id="aa"><!--在此处显示加速信息--></div>
</body>
</html>

转载于:https://www.cnblogs.com/xhrs/p/9317032.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的ADXL345加速度传感器模块计算步数和是否运动的C语言代码示例: ```c #include <Wire.h> #include <ADXL345.h> ADXL345 accelerometer; //ADXL345传感器对象 #define ACTIVITY_THRESHOLD 10 //运动检测阈值 #define STEPS_PER_MINUTE 70 //步数计算系数 #define MINUTES_PER_HOUR 60 //用于计算步数和是否运动的变量 int16_t x, y, z; //三个方向的加速度数据 int16_t x_prev, y_prev, z_prev; //上一次的加速度数据 int16_t x_diff, y_diff, z_diff; //加速度数据差值 int16_t x_sum, y_sum, z_sum; //加速度数据累加和 uint16_t stepCount; //步数计数器 uint8_t isMoving; //是否运动 void setup() { Serial.begin(9600); //初始化ADXL345传感器 accelerometer.begin(); accelerometer.setRangeSetting(16); //设置测量范围为±16g accelerometer.setActivityThreshold(ACTIVITY_THRESHOLD); //设置运动检测阈值 accelerometer.setActivityXYZ(1, 1, 1); //设置运动检测方向 accelerometer.setInactivityThreshold(ACTIVITY_THRESHOLD); //设置静止检测阈值 accelerometer.setInactivityXYZ(1, 1, 1); //设置静止检测方向 accelerometer.setTapDetectionOnX(0); //关闭单轴敲击检测 accelerometer.setTapDetectionOnY(0); //关闭单轴敲击检测 accelerometer.setTapDetectionOnZ(0); //关闭单轴敲击检测 accelerometer.setFreeFallThreshold(0); //关闭自由落体检测 accelerometer.setFreeFallDuration(0); //关闭自由落体检测 accelerometer.setDoubleTapLatency(0); //关闭双击检测 accelerometer.setDoubleTapWindow(0); //关闭双击检测 accelerometer.setDoubleTapThreshold(0); //关闭双击检测 accelerometer.setPowerControl(0x08); //设置为测量模式 //初始化变量 x_prev = y_prev = z_prev = 0; x_sum = y_sum = z_sum = 0; stepCount = 0; isMoving = 0; } void loop() { //读取ADXL345传感器数据 accelerometer.readXYZ(&x, &y, &z); //计算加速度数据差值 x_diff = abs(x - x_prev); y_diff = abs(y - y_prev); z_diff = abs(z - z_prev); //累加加速度数据 x_sum += x_diff; y_sum += y_diff; z_sum += z_diff; //更新上一次的加速度数据 x_prev = x; y_prev = y; z_prev = z; //判断是否运动 if (x_sum + y_sum + z_sum > ACTIVITY_THRESHOLD) { isMoving = 1; } else { isMoving = 0; } //计算步数 if (isMoving) { stepCount += x_diff + y_diff + z_diff; } //输出结果 Serial.print("步数:"); Serial.print(stepCount * STEPS_PER_MINUTE / MINUTES_PER_HOUR); Serial.print(" 步"); Serial.print(" 运动状态:"); if (isMoving) { Serial.println("运动"); } else { Serial.println("静止"); } //重置累加和 x_sum = y_sum = z_sum = 0; //延时一段时间 delay(1000); } ``` 这个示例代码使用了ADXL345库。在setup函数中,首先初始化了ADXL345传感器,然后设置了一些参数,包括测量范围、运动检测阈值、运动检测方向、静止检测阈值、静止检测方向等。在loop函数中,调用了readXYZ函数读取ADXL345传感器数据,然后计算加速度数据差值、累加加速度数据、判断是否运动以及计算步数。最后,输出步数和运动状态到串口,重置累加和,延时一段时间。注意,这个示例代码只是一个简单的示例,实际应用中可能需要根据具体情况进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值