Arduino无线下载套件免费申请试用-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 31496|回复: 34

[线上活动] Arduino无线下载套件免费申请试用

[复制链接]
发表于 2016-8-22 09:26 | 显示全部楼层 |阅读模式
活动类型:
线上活动
开始时间:
2016-8-22 08:56
活动地点:
Arduino中文社区
性别:
不限
已报名人数:
14
剩余名额:
17 人
报名截止:
2016-9-30 08:56

Arduino无线下载套件介绍:         
   这是一个无线串口下载arduino主板程序的工具。还可以调试程序,制作无线类传输产品,实现无线串口透明传输。使用过arduino的用户都知道,给主板在下载程序时,需要用到一根带复位功能的USB转串口线,而程序不是一次便调试好了,需要反复修改,反复下载,而这根串口线给用户带来了极大的不便,现在有更好的解决办法了――无线下载。
339D6A672930CE08EE14C74F53AB9CCC.png
      无线下载套件
参与方式:
      提供使用无线套件完成特定功能的想法并实现(不要求难度,创意越好,机率越大),收到套件后在规定时间将想法实现并发表说明帖子,参考了哪些资料,可以让初学者理解。
活动时间:20套无线套件申请完为止。
名单公布:
      1、最终入选的20个最佳项目创意,会在本帖中公布。
      2、成功入选的用户:1、在Arduino中文社区没有发布过精华帖的用户,需缴纳保证金(保证金为¥50),在完成项目后退还。在Arduino中文社区发布过精华帖的用户,提供精华帖的链接即可,无须缴纳保证金。
    3、快递费自理,顺丰或者天天快递都可以。
活动奖品:
      1、按申请要求完成相关内容后,免费赠送无线下载套件。
      2、未申请成功跟贴用户凭ID可8折购买。
视频演示:
说明:20套Arduino无线下载套件由@alleazy 提供,感谢对社区的支持~




已通过 (3 人)

  留言 申请时间
老胖熊

申请参加

2016-8-28 13:30
vickywong

地址:北京市朝阳区北三环东路15号

2016-8-24 22:47
活得精彩 2016-8-22 11:33

暂未通过 (11 人)

  留言 申请时间
野驴先生 2016-9-25 00:10
zzj007 2016-8-28 15:19
wyiori85123 2016-8-26 10:34
sdsduser 2016-8-26 08:17
neozoic 2016-8-25 23:03
neozoic 2016-8-25 23:03
Breezes 2016-8-25 20:15
fuwen0202 2016-8-24 15:56
 楼主| 发表于 2016-8-22 09:26 | 显示全部楼层
1、视频例程讲解请参考2L.
发表于 2016-8-22 09:30 | 显示全部楼层
本帖最后由 alleazy 于 2016-8-23 20:12 编辑

谢谢syl312审核通过发表,注明一下,此次活动发货日期定为9月1号之后

想参与免费赠送试用的,可以先提交自己的想法,比如计划用本套件做一个什么功能的东东,不要求难度,创意好可以加分,开动脑筋吧
我们已经将无线转化为串口形式来传输数据,不需要去了解无线底层的操作,串口发什么另一边就收什么,而且是单工双向传输的,


视频中的例程是简单获取串口数据,然后对获取到的数据进行分析计算得出结果,例程用到了比较多的串口函数,
函数说明可以参考http://blog.csdn.net/iracer/article/details/50334041
代码如下:
[mw_shl_code=c,true]
float val1 = 0;                    // val1+val2=val3 val1 val2 val3三个变量用来存储加数与结果   
float val2 = 0;                    // 也可能是加法  减法  乘法 除法   
float val3 = 0;                    // 下面称val1为第一变量   val2为第二变量  val3为结果变量
byte symbol = 0;                   // 运算标记   用来标记是哪种运算
byte dateLongBuffer[50] = {0};     // 从串口读取到的数据存在这个数组当中
byte receiveCnt = 0;               // 串口接收了多少字节
byte dateBuffer1[10] = {0};        // 将dateLongBuffer数组的第一个变量的ASCII码搬运到这个数组中
byte charNumbers1 = 0;             // 第一个变量占用多少字节   如果是123则占3字节  如果是4567则是四字节
byte dateBuffer2[10] = {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[charNumbers1++] = receiveDataTemp; // 复制数据1
              } else {           // symbol != 0说明已经遇到运算符号  应拷贝第二个变量
                  dateBuffer2[charNumbers2++] = 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();                                          // 对接收到的数据进行分析计算
         }

}[/mw_shl_code]
串口测试结果



QQ截图20160823185431.png
发表于 2016-8-22 09:52 | 显示全部楼层

seesea 参加活动
  seesea ,

已参加人数 :0 人
发表于 2016-8-22 11:33 | 显示全部楼层

活得精彩 参加活动
  活得精彩 , seesea ,

已参加人数 :0 人
发表于 2016-8-22 11:33 | 显示全部楼层

活得精彩 参加活动
  活得精彩 , seesea ,

已参加人数 :0 人
发表于 2016-8-22 11:34 | 显示全部楼层
alleazy 发表于 2016-8-22 09:30
谢谢syl312审核通过发表,注明一下,此次活动开始发货日期定为9月1号之后

我想知道一下是通过什么方式传输的?蓝牙?wifi?射频?
 楼主| 发表于 2016-8-22 12:27 | 显示全部楼层
活得精彩 发表于 2016-8-22 11:34
我想知道一下是通过什么方式传输的?蓝牙?wifi?射频?

晚点会有个详细的说明文档~
参加活动需要填写下申请内容哈
发表于 2016-8-22 15:59 | 显示全部楼层
活得精彩 发表于 2016-8-22 11:34
我想知道一下是通过什么方式传输的?蓝牙?wifi?射频?

普通类似于NRF24L01P的无线
发表于 2016-8-22 16:29 | 显示全部楼层

yuanjingyun 参加活动
  yuanjingyun , 活得精彩 , seesea ,

已参加人数 :0 人
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-27 22:46 , Processed in 0.268299 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表