将加速计传感器应用到我的玩具车上

时间:2017-07-22 13:24:47

标签: java android

我已经设法使用我的Android应用程序来控制手工制作的玩具车。

我制作的控件是手动驱动,这意味着我通过向arduino发送char来触摸按钮来移动汽车。

现在,我想进入下一个级别并使用加速计传感器。当我倾斜我的手机时,我设法得到x,y,z轴的读数,但我不知道接下来该做什么。

我面临两个选择:

  1. 我应该将加速度计值发送到arduino,让arduino决定速度(通过PWM)以及启动哪个电机。
  2. 使用android studio比较轴的值,例如,如果x轴大于5,app会向arduino发送一个字符,使汽车以所需的速度向前移动。 这是我用来获取值的代码,最后我尝试将字符“F”发送到arduino以向前移动汽车,但什么也没发生。我知道发送代码没有问题,因为我在手动驱动器活动中使用了相同的功能(使用按钮)。
  3. 代码

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
    
        TextView tvX= (TextView)findViewById(R.id.x_axis);
        TextView tvY= (TextView)findViewById(R.id.y_axis);
        TextView tvZ= (TextView)findViewById(R.id.z_axis);
    
        Sensor mySensor = sensorEvent.sensor;
        if (mySensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            float x = sensorEvent.values[0];
            float y = sensorEvent.values[1];
            float z = sensorEvent.values[2];
            last_x = x;
            last_y = y;
            last_z = z;
    
            tvX.setText(Float.toString(last_x));
            tvY.setText(Float.toString(last_y));
            tvZ.setText(Float.toString(last_z));
    
            if(last_x > 5f){
                if(btSocket!=null){
                    try
                    {
                        btSocket.getOutputStream().write("F".toString().getBytes());
                    }
                    catch (IOException e)
                    {
                        msg("Error");
                    }
                }
            }
        }
    }
    

0 个答案:

没有答案