标签: accelerometer

ESP8266 + Micropython:为什么我会定期用i2c读取来获得相同的值?

我写使用一些简单的代码MicroPython上Digistump橡树,这基本上是一个ESP8266接口板运行.我试图了解通过i2c定期读取传感器时看到的行为.

下面的代码(读取ACCEL_XOUT_HACCEL_XOUT_L寄存器的值)工作得很好:

>>> from machine import Pin, I2C
>>> bus = I2C(scl=Pin(2), sda=Pin(0))
>>> while True: 
...     h, l = bus.readfrom_mem(0x68, 0x3b, 2)
...     print (-((((h<<8)+l)^0xFFFF) + 1) if (h & (1<<7)) else (h<<8)+l)
Run Code Online (Sandbox Code Playgroud)

(该print语句只是从两个补码执行转换.)

正如预期的那样,当我移动imu时,打印出的加速度计值大致实时变化.

但如果我在循环中引入延迟,例如...

>>> import time
>>> from machine import Pin, I2C
>>> bus = I2C(scl=Pin(2), sda=Pin(0))
>>> while True: 
...     h, l = bus.readfrom_mem(0x68, 0x3b, 2)
...     print (-((((h<<8)+l)^0xFFFF) + 1) if (h & (1<<7)) else (h<<8)+l)
...     time.sleep(1) …
Run Code Online (Sandbox Code Playgroud)

accelerometer esp8266 micropython mpu6050

7
推荐指数
0
解决办法
557
查看次数

Android - 如何计算很长一段时间的时间

在我的应用程序中,我想测量加速度计静止的时间.

例如,如果我将阈值设置为0.4 m/s且加速计速度始终低于此值,则表示手机处于静止状态(阈值是计算值的抖动).

我希望能够计算手机静止的时间以及在休息时达到一定的时间,然后对该事件作出反应.

我已经让加速度计工作正常,我只需要算一下这个时间,我不熟悉如何做到这一点,任何人都可以帮助我吗?提前致谢

解:

  start = System.currentTimeMillis();

    if (vectorTotal > 10.1 || vectorTotal < 9.5){
        timelimit = (System.currentTimeMillis()+ 10000);
    }
    else if (start >= timelimit){
        checkUser();
        timelimit = (System.currentTimeMillis()+ 10000);
    }
Run Code Online (Sandbox Code Playgroud)

time android timer count accelerometer

6
推荐指数
1
解决办法
7622
查看次数

智能手机加速度计手势algorightms

我正在为iPhone和Android平台开发简单的移动应用程序,我正在寻找能够在使用内部加速度计检测某个手势时触发某些事件(函数)的算法.我使用的是Phonegap,它使用HTML5和javascript,它在预先设定的时间间隔内从加速度计读取三个坐标(x,y和z)(例如每隔0.04秒).

我写了一个简单的函数来检测摇动动作并且它工作得非常好但它是原始的(它只能检测到震动,而不是方向) - 我想要检测一些其他手势,例如: - 倾斜(向左/向右) - 向上/向下摇 - 左/右摇 - 圆周运动 - 颠倒 - 等......

是否有人能够根据我拥有的输入值(x,y,z和每次调用的时间间隔)计算(检测)这种手势的算法(或至少是数学公式/函数)?

我正在寻找任何编程语言的代码(我将自己重写为javascript.提前感谢!

iphone android accelerometer gesture-recognition cordova

6
推荐指数
1
解决办法
5167
查看次数

如何解读iPhone的加速度计读数

我正在尝试构建一个基于Kinect和iPhone的应用程序.

我试图根据kinect返回的轨迹计算我的手在XY和Z轴的每一个上随时间的加速度.基本上我选择的0.5秒或15帧(标准时间间隔dt)和3点,( x0,x1x2)超过其通过0.5秒separeted时间.首先我要提一下,以米为单位提到3点的位置.通过使用这些点,我计算两种速度(v0 = (x1 - x0) / dtv1 = (x2 - x1) / dt).最后,通过使用这个速度,我计算的加速度x1x2作为acc = (v1 - v0) / dt.

我在每一帧重复这些计算,然后获得一系列加速度.

正如我所说,我还有一部iPhone,我想看看我用哪只手拿着我的iPhone,左手还是右手.我想通过尝试将我的手的加速度与保持在正确位置的iPhone的加速度相匹配来做到这一点,这样我就拥有相同的轴系统.

唯一的问题是我的加速度和手机的加速度之间存在巨大差异.

每个轴的手机加速读数介于-2和2之间,而我的介于-10和10之间.我应该如何解释iPhone的加速度,以获得类似于以米/秒为单位的采矿措施?

c# iphone accelerometer kinect

6
推荐指数
1
解决办法
2004
查看次数

垂直运动传感器

我正在开发一款需要检测垂直运动的Android应用程序.向上移动平板电脑时,陀螺仪,加速度计和线性加速度传感器会给出相应的值,表示向上或向下运动.

我遇到的问题是,当您将平板电脑向用户倾斜或远离用户时,这些传感器也会读取向上/向下的动作.例如,陀螺仪中的x值表示垂直平面.但是当您向前倾斜设备时,x值将会改变.当我做这个动作时,读取垂直运动的同一个传感器为此读取一个值. 在此输入图像描述

其他传感器也是如此.我试图使用方向与陀螺仪结合来制作条件语句,如果音高没有变化,但是x变量上升/下降,那么我们就有垂直运动.这个问题是,如果用户向上移动但略微倾斜,它将不再起作用.我也试过这样做,如果倾斜有变化,那么就没有垂直运动了.但是迭代速度如此之快,以至于倾斜度可能会有1/100秒的变化,但是接下来却没有.

有什么方法我只能读取垂直变化而不是设备间距的变化吗?

这是我想要检测的: 在此输入图像描述

编辑:

"请提出一个数学上合理的定义,你认为'向上移动'."这是我最初的问题,我如何编写一个函数来定义平板电脑何时向上或向下移动?我认为垂直翻译向上移动.现在我该怎么检测到这个?我根本不知道从哪里开始,谢谢.

android accelerometer motion tilt gyroscope

6
推荐指数
1
解决办法
4566
查看次数

如何将伪加速度计值发送到真实设备上的应用程序?

例如,Location Spoofer通过使用Access Mock Location权限发出假位置,我可以让我的设备发出一个信号,表明它存在于我想要的任何地方.

以同样的方式,我可以伪造Accelerometer数据来模拟用户可以处于的各种情况吗?

提前致谢.

android mocking accelerometer

6
推荐指数
1
解决办法
1万
查看次数

我可以使用Fitbit Api来获取Fitbit的加速度数据吗?

我正在尝试使用Fitbit的数据来抓住我的手部动作.

然后我在这里找到Fitbit Api:https://wiki.fitbit.com/display/API/Fitbit+Resource+Access+API

在收集资源部分,我似乎只能获得一些数据,如身体测量,体重,近期活动,朋友等.

所以,我的问题是,Fitbit是否提供任何API来帮助我获取实时加速度计数据和陀螺仪数据?

java api sensor accelerometer fitbit

6
推荐指数
1
解决办法
944
查看次数

如何使用具有3D效果的加速度计移动视图?

我尝试重现以下动画:

3D效果动画

1)实施加速度计没有问题:

public class Accelerometer extends AppCompatActivity implements SensorEventListener {

    private SensorManager senSensorManager;
    private Sensor senAccelerometer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //...

        // Get a reference to a SensorManager
        senSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        senAccelerometer = senSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    }

    // This method will update the UI on new sensor events
    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
        Sensor sensor = sensorEvent.sensor;

        if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            float x = sensorEvent.values[0];
            float y = sensorEvent.values[1];
        }
    }

    @Override
    public void onAccuracyChanged(Sensor arg0, int …
Run Code Online (Sandbox Code Playgroud)

animation android accelerometer

6
推荐指数
0
解决办法
162
查看次数

如何使用加速度计和Swift快速检测苹果手表的位置?

我已经为Apple Watch创建了一个应用程序.逻辑是,当用户举手并点击应用程序中的按钮时.那时我将获取加速度计值.每当用户举手并达到捕获位置时,我都必须向iPhone发送消息.

对我来说正确地得到了值但是,它总是会根据加速度计给出值.这意味着用户不会抬起手但加速度计值匹配.因此值将发送到移动设备.

func startUpadateAccelerometer() {
        self.motionManager.accelerometerUpdateInterval = 1.0 / 10.0
        self.motionManager.startAccelerometerUpdates(to: OperationQueue()) { (accelerometerData, error) -> Void in
            guard accelerometerData != nil else
            {
                print("There was an error: \(String(describing: error))")
                return
            }

            DispatchQueue.main.async {
                if(self.can_reset){
                    let differenceX : Bool = self.validateButtom(currentValue: accelerometerData!.acceleration.x, inititalValue: self.gravityReference.x)
                    let differenceY : Bool = self.validateButtom(currentValue: accelerometerData!.acceleration.y, inititalValue: self.gravityReference.y)

                    if(differenceX && differenceY && self.gravityOffsetDifference(currentValue: accelerometerData!.acceleration.x, referenceValue: self.gravityReference.x ) && self.gravityOffsetDifference(currentValue: accelerometerData!.acceleration.y, referenceValue: self.gravityReference.y)){
                        WKInterfaceDevice().play(.success)
//                        self.addLog(_logStr: EventsTypes.Achievements1.rawValue)

                        self.logString += String(format: "X: %0.3f Y: %0.3f Z: …
Run Code Online (Sandbox Code Playgroud)

accelerometer ios devicemotion apple-watch swift3

6
推荐指数
1
解决办法
479
查看次数

JS使用DeviceAcceleration.x无缝平移图像

我有一个比视口大的图像,我正试图根据设备加速值在x计划上平移.

            _____________________
            |                   |
            |   Device          |
            |                   |
    ________|___________________|__________
    |       |                   |         |
    |       |   Image           |         |
    |       |                   |         |
    |_______|___________________|_________|
            |                   |
            |                   |
            |                   |
            |                   |
            |___________________|


            <-------------------->
                    X axis      
Run Code Online (Sandbox Code Playgroud)

我可以得到半体面的结果,但没有什么比这更好的了.

根据我的理解,我需要:

  • 得到加速度值
  • 得到对象的位置
  • 结合这两个值(可能与频率?)
  • 将新位置应用于对象

到目前为止,我有类似的东西:(我正在使用gyronorm.js,因此调用加速度数据data.dm.x)

var accelX = data.dm.x
var currTrans = $('#pano').css('-webkit-transform').split(/[()]/)[1]
var posX = parseInt(currTrans.split(',')[4])
var newPos = posX+accelX
$('#pano').css({'-webkitfr-transform':'translateX('+(newPos)+'px)'})
Run Code Online (Sandbox Code Playgroud)

我觉得我在这里错过了一个核心概念,但经过几个小时的研究,我无法找到它.

javascript accelerometer motionevent

6
推荐指数
1
解决办法
303
查看次数