微信小程序——使用加速计实现水平仪功能,另介绍一款硬件数据监听工具(加速计、陀螺仪、设备方向)

摘要

实现水平仪的算法不难,但是理解加速计—wx.onAccelerometerChange、陀螺仪—wx.onGyroscopeChange、设备方向—wx.onDeviceMotionChange这些接口返回数据很恶心,一是只能真机调试,二是晃动手机很难在一堆数据中找到规律,很恶心,为此,本文除了介绍水平仪的简单算法外,更重要的是介绍一款找数据规律的工具。

效果

水平仪效果(晃动真机)
在这里插入图片描述
硬件数据监听工具效果(晃动真机)
在这里插入图片描述

扫码体验

体验路径:
水平仪:硬件系列>水平仪
硬件数据监听工具:硬件系列>硬件数据监听工具
在这里插入图片描述

水平仪代码

// miniprogram/pages/index/pages/gyroscope/gyroscope.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    rotateXY:0,
    rotateYZ:0,
    rotateZX:0,
    backgroundColor:'#000000',
    degreesXY: 0,
    degreesYZ: 0,
    degreesZX: 0,
    isOnAccelerometerChange: true,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this
    wx.onAccelerometerChange(function (res) {
      if(!that.data.isOnAccelerometerChange){
        return
      }
      var rotateXY = Math.atan2(res.x, res.y) * 180 / Math.PI
      var rotateYZ = Math.atan2(res.y, res.z) * 180 / Math.PI
      var rotateZX = Math.atan2(res.z, res.x) * 180 / Math.PI
      if (rotateXY<0){
        that.setData({
          rotateXY: rotateXY,
          degreesXY: (rotateXY + 180).toFixed(2),
          rotateYZ:rotateYZ,
          rotateZX:rotateZX
        })
      }else{
        that.setData({
          rotateXY: rotateXY,
          degreesXY: -(180 - rotateXY).toFixed(2),
          rotateYZ: rotateYZ,
          rotateZX: rotateZX
        })
      }
    })
  },
  onUnload: function () {
    this.setData({
      isOnAccelerometerChange:false
    })
    wx.stopAccelerometer({
    })
  }
})

wxml

<view class="container">
<view class="view-row" style="color:#aaa;font-size:36rpx;margin:30rpx;border-bottom:1rpx solid #aaa;padding:10rpx">hardware—水平仪</view>
  <view style="font-size:32rpx;color:#aaa">加速计实现(请竖直摆放手机)</view>
<view style="width:300rpx;height:10rpx;background:{{backgroundColor}};margin-top:200rpx;transform: rotate({{rotateXY}}deg);border-radius:5rpx;"></view>
<view class="view-row" style="color:#aaa;font-size:36rpx;margin:30rpx;padding:10rpx;margin-top:200rpx;">水平偏移{{degreesXY}}°</view>
</view>

程序员不易,鼓励一下!

在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玩烂小程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值