bluetooth控制Arduino单片机的红外发射装置(二)——Android部分
来源:互联网 发布:微信小程序在js中遍历 编辑:程序博客网 时间:2024/04/28 20:40
继上次更新的Bluetooth控制Arduino单片机项目的arduino部分之后,本期将更新Android手机跟Bluetooth通信部分,主要是Eclipse平台的Java编程,以及Arduino平台的C编程。
开始之前,我们来看一下Android手机和Bluetooth实现通信的答题思路。
第一步,我们需要打开Android手机的本地蓝牙设备。
creatButton.setOnClickListener(creatOnClickListener);
View.OnClickListener creatOnClickListener=new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//得到BluetoothAdapter对象//判断手机是否有蓝牙设备if(adapter!=null){if (adapter.isEnabled()) {TextView.setText(R.string.bluetoothon_TextView);}else if(!adapter.isEnabled()) {//修改蓝牙设备的可见性Intent discoverIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);//指定蓝牙可见状态可见时间为300sdiscoverIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);//弹出对话框询问是否执行此操作startActivity(discoverIntent);TextView.setText(R.string.bluetoothon_TextView);}}}};
第二步,我们需要搜索所需要的蓝牙设备,我用的是HC-05的蓝牙模块。
scanButton.setOnClickListener(scanOnClickListener);
//开始扫描周边的蓝牙设备,并发送广播View.OnClickListener scanOnClickListener =new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//开始扫描周边的蓝牙设备,并发送广播adapter.startDiscovery();}};
注册一个广播来看是否搜索到HC-05此蓝牙设备。若搜索到HC-05,则在listview中显示HC-05的信息,并且停止搜索。(注意:我们事先将安卓手机和HC-05蓝牙模块进行配对,使用的是android系统自带的蓝牙配对方式)
private String nameBluetoothString="HC-05";//蓝牙设备名称
//创建Intent过滤器IntentFilter intentFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);bluetoothReceiver = new BluetoothReceiver();//注册广播接收器registerReceiver(bluetoothReceiver, intentFilter);
//接收广播private class BluetoothReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context,Intent intent) {String action = intent.getAction();if(BluetoothDevice.ACTION_FOUND.equals(action)) {//得到远程蓝牙设备的对象device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);//显示搜索到的蓝牙设备信息,只显示一行蓝牙设备ArrayList<HashMap<String, Object> > myList=new ArrayList<HashMap<String,Object>>();for(int i=0;i<1;i++) {HashMap<String, Object> map =new HashMap<String, Object>();map.put("num","\nBlueTooth:");map.put("info", "NAME:"+device.getName()+"\n"+"MAC:"+device.getAddress()+"\r");myList.add(map);}//若搜索到所需的蓝牙设备,则停止继续搜索if (device.getName().equalsIgnoreCase(nameBluetoothString)) {adapter.cancelDiscovery();//Toast信息显示Toast.makeText(getApplicationContext(), R.string.toast_String1,Toast.LENGTH_SHORT).show();}//ListView适配器(重点注意第一个参数的写法)SimpleAdapter mySimpleAdapter=new SimpleAdapter(context, myList, R.layout.listview_bluetooth, new String[] {"num","info"}, new int[] {R.id.num_bluetoothdevice,R.id.info_bluetoothdevice});listView.setAdapter(mySimpleAdapter);}}}
第三步,我们则需要连接HC-05。
//全球唯一标示符,用于普通蓝牙适配器和android手机蓝牙模块连接的private static final UUID MY_UUID=UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
public void connectDevice(){try {socket=device.createRfcommSocketToServiceRecord(MY_UUID);socket.connect();connected=true;linearLayout1.setVisibility(View.VISIBLE);} catch (Exception e) {// TODO: handle exceptionconnected=false;try {socket.close();socket=null;} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}
最后一步,连接蓝牙成功之后,我们需要来发送msg给Arduino单片机。
//发送数据函数public void sent(String string){if (socket==null) {Toast.makeText(getApplicationContext(), "未连接", Toast.LENGTH_SHORT).show();return;}try {OutputStream osOutputStream =socket.getOutputStream();osOutputStream.write(string.getBytes());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
modeButton.setOnClickListener(modeOnClickListener);
//模式按钮View.OnClickListener modeOnClickListener=new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubsent("m");}};
上面涉及到安卓手机蓝牙的四个操作步骤,只有关键性的函数代码,希望可以对自己或对他人有所帮助。
接下来,就是在Arduino层面上的蓝牙msg接收工作,我们还是以模式按钮为例。
#include <SoftwareSerial.h>#include <IRremote.h>SoftwareSerial BT(10,9);const byte ledPin = 13;char val;String str;IRsend irsend;unsigned int test1[]={2086,27038,556,1372,532,3384,516};unsigned int ddelay[]={0,67260};unsigned int danfan1[]={600,1300,600,3300,600};unsigned int danfan2[]={600,1300,600,3300,600,26850};void setup(){ pinMode(ledPin,OUTPUT); BT.begin(9600); Serial.begin(9600); //BT.print("bluetooth is ready!!!");}void loop(){ if(BT.available()){ val=BT.read(); switch(val){ //mode case 'm': irsend.sendRaw2(test1,7,38); delay(67); irsend.sendRaw2(test1,7,38); //Serial.println(val); break; default: break; } }}
这样就可以通过蓝牙实现Android手机好Arduino单片机的通信啦!
0 0
- bluetooth控制Arduino单片机的红外发射装置(二)——Android部分
- bluetooth控制Arduino单片机的红外发射装置(一)——Arduino部分
- 基于单片机的红外发射C语言程序单片机
- 单片机控制的红外库
- 利用单片机自制简单的RS232信号发射装置
- arduino 红外控制彩灯
- 红外遥控对单片机的控制(测试成功)
- Arduino Uno 红外遥控 接收 和 发射信号 实验 (上)
- Arduino Uno 红外遥控 接收 和 发射信号 实验 (下)
- Android开发——Bluetooth(二)
- 红外发射、接收头(红外基础知识)
- 红外发射、接收头(红外基础知识)
- MSP430(f149)学习笔记——红外遥控发射
- 新唐Cortex—M0学习红外发射
- 红外遥控系统之二:GPIO模拟红外遥控发射
- 基于51单片机和蓝牙控制的红外小车
- 51单片机模拟红外遥控发射传输温湿度数据
- STC单片机红外遥控器读码、发射程序
- 查看centos中的用户和用户组
- 第八周项目三 多分段函数求值(1)
- android命令行创建并打包项目
- 支持向量机SVM(一)
- json-lib的使用
- bluetooth控制Arduino单片机的红外发射装置(二)——Android部分
- 第8周项目5-定期存款利息计算器
- 程序设计作业报告项目四
- iomanip 头文件介绍
- android 各类demo链接
- php如何清除html格式并去除文字中的空格然后截取文字
- Hadoop学习资料、博客及网站汇总
- Spring源码下载地址
- Apache Storm的由来与成功介绍