安卓手机蓝牙控制智能小车 android程序设计

您所在的位置:网站首页 安卓蓝牙驱动程序 安卓手机蓝牙控制智能小车 android程序设计

安卓手机蓝牙控制智能小车 android程序设计

2024-07-18 05:15:29| 来源: 网络整理| 查看: 265

项目名称: 安卓手机控制智能小车 本文主要介绍手机端程序设计 源码托管在地址:github.com/cyang812/Bluetooth_Car

开发平台 :win10; 开发软件:Android Studio 2.1

在开发的过程中,软件版本有过几次更新,本文重点讲述更新逻辑及实现过程。 一、Bluetooth_Demo(通过按钮控制)

1、这是最早开发的版本,通过连接蓝牙后,可实现通过按钮(Button)控制小车运动。 2、主要代码: Version 1.0 监听按钮的点击事件

…… public void onClick(View v){ switch (v.getId()){ case R.id.imagebutton1: message[0]= (byte) 0x41;//设置要发送的数值 vibrator();//振动器 Toast.makeText(this,"前进",Toast.LENGTH_SHORT).show(); bluesend(message);//发送数值 Log.d("cy08",""+message[0]); break; case R.id.imagebutton2: message[0]= (byte) 0x44; vibrator(); Toast.makeText(this,"左转",Toast.LENGTH_SHORT).show(); bluesend(message); Log.d("cy08",""+message[0]); break; ……

Version 1.0 Bug 点击前进后,便会不停向前,直到接受到下一个控制信号。其他按钮也是如此,这样小车运行就没办法停止。 这个问题的原因是,从手机程序的角度说,点击一个按钮后,程序判断这个按钮的意图,例如前进,则发送一个预设的数值,比如 ‘A’,当然这需要转换成ASCII码值,并采用十六进制发送,具体会在蓝牙通信原理部分讲述。也就是说,点击一次按钮,仅发送一次数据。从单片机程序讲,蓝牙模块接受完一个数据,通过串行口请求中断,单片机根据接收到的数据控制输出,以实现对小车的控制。所以按一个按钮仅发送一个数据的方式实际上就造成了小车运动不灵活,无法停止。

Version 1.1 添加停止按钮

case R.id.imagebutton5: message[0]= (byte) 0x40; vibrator(); Toast.makeText(this,"停止",Toast.LENGTH_SHORT).show(); bluesend(message); Log.d("cy08",""+message[0]); break;

这个版本添加停止按钮,通过发送一个不同的数值,蓝牙将该数值传输给单片机后,单片机对电机的输出端变为低电平,之后小车停止运动。 这个按钮实际上解决了问题,只不过在每次想要停止时还要按下按钮不是一种符合交互逻辑的方式。更好的方式应该是按下按钮小车运动,放开按钮小车停止。这也就是 Version 1.2

Version 1.2 部分代码 监听按下和放开的事件

class ButtonListener implements View.OnTouchListener { public boolean onTouch(View v, MotionEvent event) { switch (v.getId()){ case R.id.imagebutton1: if(event.getAction() == MotionEvent.ACTION_UP){//放开事件 message[0]= (byte) 0x40;//设置要发送的数值 bluesend(message);//发送数值 Log.d("cy08",""+message[0]); } if(event.getAction() == MotionEvent.ACTION_DOWN){//按下事件 message[0]= (byte) 0x41;//设置要发送的数值 bluesend(message);//发送数值 Log.d("cy08",""+message[0]); } break;

这段代码实现了监听按钮的按下和放开事件。按下和放开发送不同的数值,用以实现不同的控制。按下前进,发送数值,单片机进入中断程序,放开发送新的数值,单片机又一次中断。 这个版本删除了 V1.1中的停止按钮,因为已经不需要了,放开任意按钮就会发送停止运行的数据。

二、Gsensor(通过手机传感器控制)

1、手机调用传感器判断手机方位,通过连接蓝牙后发送数据,控制小车运动。 2、主要代码: Version 1.0

if (y < 0 && z < 10) { textUp.setText("up"); message[0]= (byte) 0x41; //vibrator(); Toast.makeText(this,"前进",Toast.LENGTH_SHORT).show(); bluesend(message); Log.d("cy08",""+message[0]); } else { textUp.setText("wait"); } if (y > 0 && z < 10) { textDown.setText("down"); message[0]= (byte) 0x42; //vibrator(); Toast.makeText(this,"后退",Toast.LENGTH_SHORT).show(); bluesend(message); Log.d("cy08",""+message[0]); } else { textDown.setText("wait"); }

首先调用手机内置的加速度传感器,系统会放回三个整形数字,范围为(-10,10),这三个数字分别表示手机XYZ轴三个方向上的加速度分量。 这里写图片描述 我们可以通过判断这三个数值的大小,确定手机的方向,例如,手机平放时这三个数十(0,0,10),而手机前倾时,X分量不变,Y分量小于0,Z分量小于10. 可通过限制这三个分量的大小,判断操作者的意图,并通过蓝牙传输数据,单片机处理数据控制输出。

三、Bluetooth_Car(通过按钮切换以上两种模式)

1、上面两种方式开始是两个单独的程序,这个程序只是将两种方式融合。 这里写图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭