说明数据是完整的,方可利用获取的数据进行运算和控制。
本设计采用的串口设臵为:波特率9600,8个数据位,1个停止位,无奇偶校验;为保证数据的完整、正常,采用的通讯协议如下:
包头 0xff 温度数据1 Arduino读取温度值的千位和百位 温度数据2 Arduino读取的温度值的十位和个位 光线数据1 Arduino读取的光线值的千位和百位 光线数据2 Arduino读取的光线值的十位和个位 异或校验 温度数据1、2和光线数据1、2的异或校验 包尾 0xfe Arduino端发送的数据协议 注:由于arduino的模拟量端为10位的精度;最大值为1024,但是串口一个数据为8
位;所以把采集到的数据拆分后再组合;
手机客户端发送的数据协议
注:控制器件的编号规则:舵机控制界面为0xaa,灯光控制界面为0xee;arduino通过
这个数据值来判别当前手机客户端处于哪个器件的控制界面;
包头 0xff 控制器舵机角灯光亮件编号 度数据 度数据 0xaa或0xee 控制数据1 控制数据2 异或校验 控制器件和舵机角度以及灯光亮度数据的异或校验 包尾 0xfe 21
5、成品展示
22
参考文献
[1] 网络上查找资料
[2] 班兹?爱上Arduino?人民邮电出版社?2011
[3] 程晨?Arduino开发实战指南?机械工业出版社?2012
23
致 谢
对于这次毕业论文的撰写,最需要感谢的是余训锋老师。他在整个过程中都给予了我充分的帮助与支持。余训锋老师不仅耐心地为我指出论文中的不足之处,对论文的改进提出宝贵的建议,而且还在我遇到困难时尽心地进行指点与解答。在此借论文完成之际,表示由衷的感谢与敬意。
24
附录:
#include
#define ONE_WIRE_BUS 2// 初始连接在单总线上的单总线设备Servo myservo;
OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire);
unsigned int RPotPin =0; // 设定模拟输入引脚 unsigned int val = 0; //定义一个变量 unsigned char servo = 0; //定义一个变量 unsigned char diandeng = 0; //定义一个变量 unsigned char object = 0; //定义一个变量 unsigned int wendu=0; byte wendugao=0; byte wendudi=0; byte valhigh=0; byte vallow=0; int led =7;
String data = \字符串缓存 void setup(void) {
myservo.attach(9);//定义舵机引脚为9脚; pinMode(led,OUTPUT);//定义引脚为输出模式; Serial.begin(9600); // 设臵串口通信波特率; sensors.begin();// 初始库; }
25