Arduino无线下载套件免费申请试用
Arduino无线下载套件介绍: 这是一个无线串口下载arduino主板程序的工具。还可以调试程序,制作无线类传输产品,实现无线串口透明传输。使用过arduino的用户都知道,给主板在下载程序时,需要用到一根带复位功能的USB转串口线,而程序不是一次便调试好了,需要反复修改,反复下载,而这根串口线给用户带来了极大的不便,现在有更好的解决办法了――无线下载。 无线下载套件参与方式: 提供使用无线套件完成特定功能的想法并实现(不要求难度,创意越好,机率越大),收到套件后在规定时间将想法实现并发表说明帖子,参考了哪些资料,可以让初学者理解。活动时间:20套无线套件申请完为止。名单公布:
1、最终入选的20个最佳项目创意,会在本帖中公布。
2、成功入选的用户:1、在Arduino中文社区没有发布过精华帖的用户,需缴纳保证金(保证金为¥50),在完成项目后退还。在Arduino中文社区发布过精华帖的用户,提供精华帖的链接即可,无须缴纳保证金。 3、快递费自理,顺丰或者天天快递都可以。活动奖品: 1、按申请要求完成相关内容后,免费赠送无线下载套件。
2、未申请成功跟贴用户凭ID可8折购买。视频演示:http://v.youku.com/v_show/id_XMTY5NjMxMDU2OA==.html说明:20套Arduino无线下载套件由@alleazy 提供,感谢对社区的支持~
1、视频例程讲解请参考2L. 本帖最后由 alleazy 于 2016-8-23 20:12 编辑
谢谢syl312审核通过发表,注明一下,此次活动发货日期定为9月1号之后
想参与免费赠送试用的,可以先提交自己的想法,比如计划用本套件做一个什么功能的东东,不要求难度,创意好可以加分,开动脑筋吧
我们已经将无线转化为串口形式来传输数据,不需要去了解无线底层的操作,串口发什么另一边就收什么,而且是单工双向传输的,
视频中的例程是简单获取串口数据,然后对获取到的数据进行分析计算得出结果,例程用到了比较多的串口函数,
函数说明可以参考http://blog.csdn.net/iracer/article/details/50334041
代码如下:
float val1 = 0; // val1+val2=val3 val1 val2 val3三个变量用来存储加数与结果
float val2 = 0; // 也可能是加法减法乘法 除法
float val3 = 0; // 下面称val1为第一变量 val2为第二变量val3为结果变量
byte symbol = 0; // 运算标记 用来标记是哪种运算
byte dateLongBuffer = {0}; // 从串口读取到的数据存在这个数组当中
byte receiveCnt = 0; // 串口接收了多少字节
byte dateBuffer1 = {0}; // 将dateLongBuffer数组的第一个变量的ASCII码搬运到这个数组中
byte charNumbers1 = 0; // 第一个变量占用多少字节 如果是123则占3字节如果是4567则是四字节
byte dateBuffer2 = {0}; // 将dateLongBuffer数组的第二个变量的ASCII码搬运到这个数组中
byte charNumbers2 = 0; // 第二个变量占用多少字节
/*
* 程序启动初始化注意波特率匹配
*/
void setup() {
Serial.begin(57600); // opens serial port, sets data rate to 57600 bps
Serial.println("Hello, I'm a robot, nice to meet you.");
}
/*
* 从指定长度的ASCII码转化成十进制INT型变量
*/
int getInt(unsigned char *pucData, unsigned char ucLength)
{
unsigned char i = 0;
int valTemp = 0;
String stringCopy = "";
for (i = 0; i < ucLength; i++) {
stringCopy += (char)pucData; // 拷贝字符串数据
}
valTemp = stringCopy.toInt(); // 这是一个将字符串变量转化变INT变量的函数
return valTemp; // 将结果返回
}
/*
* 为了程序的整洁 将数据变换过程放到此函数中
*/
void analyseData(void)
{
byte i = 0;
byte receiveDataTemp = 0;
// 将各变量初始化为0
symbol = 0;
charNumbers1 = 0;
charNumbers2 = 0;
for (i = 0; i < 10; i++) {
dateBuffer1 = 0;
dateBuffer2 = 0;
}
// 对串口数据逐个分析
for (i = 0; i < receiveCnt; i++) {
receiveDataTemp = dateLongBuffer; //
if ((receiveDataTemp >= '0' && receiveDataTemp <= '9')) {// 判断数据是否为0~9的ASCII码
if (symbol == 0) { // symbol = 0说明还没有遇到运算符号应拷贝第一个变量
dateBuffer1 = receiveDataTemp; // 复制数据1
} else { // symbol != 0说明已经遇到运算符号应拷贝第二个变量
dateBuffer2 = receiveDataTemp; // 复制数据2
}
} else if (receiveDataTemp == '+'){
symbol = '+'; // 记录运算符号
val1 = getInt(dateBuffer1, charNumbers1);
} else if(receiveDataTemp == '-') {
symbol = '-';
val1 = getInt(dateBuffer1, charNumbers1);
} else if(receiveDataTemp == '*') {
symbol = 'x';
val1 = getInt(dateBuffer1, charNumbers1);
} else if(receiveDataTemp == '/') {
symbol = 'c';
val1 = getInt(dateBuffer1, charNumbers1);
} else if ((receiveDataTemp == '=')&& symbol != 0) { // 判断运算结束符号 '=' 将结果运算并打印出来
val2 = getInt(dateBuffer2, charNumbers2);
Serial.println("I got the answer");
switch (symbol) {
case '+':
val3 = val1 + val2;
Serial.print(val1,DEC);
Serial.print(" + ");
Serial.print(val2,DEC);
Serial.print(" = ");
Serial.println(val3,DEC);
break;
case '-':
val3 = val1 - val2;
Serial.print(val1,DEC);
Serial.print(" - ");
Serial.print(val2,DEC);
Serial.print(" = ");
Serial.println(val3,DEC);
break;
case 'x':
val3 = val1 * val2;
Serial.print(val1,DEC);
Serial.print(" * ");
Serial.print(val2,DEC);
Serial.print(" = ");
Serial.println(val3,DEC);
break;
case 'c':
val3 = val1 / val2;
Serial.print(val1,DEC);
Serial.print(" / ");
Serial.print(val2,DEC);
Serial.print(" = ");
Serial.println(val3,DEC);
break;
}
symbol = 0xFF;
} else {
symbol = 0; // 遇到无效字符,退出 做标记
break;
}
}
// 如果symbol不为0xFF 则说明运算不成功给出提示
if (symbol != 0xFF) {
Serial.println("You are kidding me");
Serial.println("You can enter this data: xx...xx+xx...xx=");
}
}
void loop() {
if (Serial.available()) { // 判断串口是否有数据 如果有数据则等待100ms 数据接收完成
delay(100); // 等待数据接收完成
receiveCnt = Serial.available(); // 读取串口数据个数
Serial.readBytes(dateLongBuffer,receiveCnt); // 从串口读取数据,读取完成自动清除缓存
analyseData(); // 对接收到的数据进行分析计算
}
}串口测试结果
seesea 参加活动
seesea ,
已参加人数 :0 人
活得精彩 参加活动
活得精彩 , seesea ,
已参加人数 :0 人
活得精彩 参加活动
活得精彩 , seesea ,
已参加人数 :0 人
alleazy 发表于 2016-8-22 09:30
谢谢syl312审核通过发表,注明一下,此次活动开始发货日期定为9月1号之后
我想知道一下是通过什么方式传输的?蓝牙?wifi?射频? 活得精彩 发表于 2016-8-22 11:34
我想知道一下是通过什么方式传输的?蓝牙?wifi?射频?
晚点会有个详细的说明文档~
参加活动需要填写下申请内容哈 活得精彩 发表于 2016-8-22 11:34
我想知道一下是通过什么方式传输的?蓝牙?wifi?射频?
普通类似于NRF24L01P的无线
yuanjingyun 参加活动
yuanjingyun , 活得精彩 , seesea ,
已参加人数 :0 人