极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11622|回复: 1

有没有用蓝牙模块的,发现有一定延时,不知道是否正常

[复制链接]
发表于 2013-9-12 17:48:00 | 显示全部楼层 |阅读模式
我是用蓝牙连接小车的时候发现这个问题的。 之前用蓝牙模块单独测试的时候还没感觉,开始大概就半秒到一秒左右

手机通过蓝牙控制小车到时候感觉就明显了。 手机端是用 python 去操作的,python 发送一个字符,arduino 收到以后返回一个字符,python 收到字符以后统计时间,大概 1s 。 不大清楚是否单向通信一次需要 0.5s 。

本来也有怀疑是 python 在手机环境跑的性能问题。 找了几个现成的可以直接走蓝牙和 arduino 通信的  android app , 包括 ArduinoBluetooth 和 Amarino 虽然没有时间统计,但是能发现是有延时,感觉上大概半秒到一秒左右。

有没有也用蓝牙的朋友,可以用程序统计下通信时间?






  1.     //=== 控制电机相关
  2.     // left whell
  3.     int pinIN1=8;    // IN1
  4.     int pinIN2=9;    // IN2
  5.     int pinENA=11;   // ENA(PWM调速)接口
  6.     int speedENA = 254; // 可以调速

  7.     // right whell
  8.     int pinIN3=6;    // IN3
  9.     int pinIN4=7;    // IN4
  10.     int pinENB=10;   // ENB(PWM调速)接口
  11.     int speedENB = 254; // 可以调速

  12.      
  13.     void setup()
  14.     {
  15.       Serial.begin(9600);
  16.       Serial.println("setup");
  17.       
  18.         // left wheel
  19.         pinMode(pinIN1,OUTPUT);
  20.         pinMode(pinIN2,OUTPUT);
  21.         pinMode(pinENA,OUTPUT);

  22.         // right wheel
  23.         pinMode(pinIN3,OUTPUT);
  24.         pinMode(pinIN4,OUTPUT);
  25.         pinMode(pinENB,OUTPUT);
  26.     }

  27.     void loop()
  28.     {
  29.       if(Serial.available() )
  30.       {
  31.         char line[500] = "";
  32.         Serial.readBytesUntil('\0', line, 500);
  33.         Serial.print("arduino:");
  34.         
  35.         if(0 == strcmp("go", line) || 0 == strcmp("g", line) )
  36.         {
  37.           go();
  38.         }
  39.         else if(0 == strcmp("back", line) || 0 == strcmp("b", line))
  40.         {
  41.           back();
  42.         }
  43.         else if(0 == strcmp("left", line) || 0 == strcmp("l", line))
  44.         {
  45.           left();
  46.         }
  47.         else if(0 == strcmp("right", line) || 0 == strcmp("r", line))
  48.         {
  49.           right();
  50.         }
  51.         else if(0 == strcmp("stop", line) || 0 == strcmp("s", line))
  52.         {
  53.           stop();
  54.         }

  55.         else
  56.         {
  57.             Serial.println(line);
  58.         }
  59.       
  60.       }
  61.     }



  62.     // 前进
  63.     void go() {
  64.         Serial.println("----go");
  65.         // left wheel
  66. //        analogWrite(pinENA,speedENA);  // 速度设定
  67. //        digitalWrite(pinIN1,LOW);     // 下面俩个 使直流电机针转
  68. //        digitalWrite(pinIN2,HIGH);
  69. //
  70. //        // right wheel
  71. //        analogWrite(pinENB,speedENB);  // 速度设定
  72. //        digitalWrite(pinIN3,HIGH);      // 转动: 注意按照我之前的接线,这里要跟前面的轮子的设定相反,方向才相同
  73. //        digitalWrite(pinIN4,LOW);
  74.     }



  75.     // 后退
  76.     void back() {
  77.         Serial.println("----back");
  78.         // left wheel
  79. //        analogWrite(pinENA,speedENA);  // 速度设定
  80. //        digitalWrite(pinIN1,HIGH);     // 下面俩个 使直流电机针转
  81. //        digitalWrite(pinIN2, LOW);
  82. //
  83. //        // right wheel
  84. //        analogWrite(pinENB,speedENB);  // 速度设定
  85. //        digitalWrite(pinIN3,LOW);      // 转动: 注意按照我之前的接线,这里要跟前面的轮子的设定相反,方向才相同
  86. //        digitalWrite(pinIN4,HIGH);

  87.     }

  88.    // 停止
  89.     void stop() {
  90.         Serial.println("----stop");
  91. //        digitalWrite(pinIN1,HIGH);     // 下面俩个 使直流电机针转
  92. //        digitalWrite(pinIN2, HIGH);
  93. //
  94. //        // right wheel
  95. //        digitalWrite(pinIN3,HIGH);      // 转动: 注意按照我之前的接线,这里要跟前面的轮子的设定相反,方向才相同
  96. //        digitalWrite(pinIN4,HIGH);
  97.     }

  98.     // 左转
  99.     void left() {
  100.         Serial.println("----left");
  101.         // left wheel
  102. //        analogWrite(pinENA,speedENA);  // 速度设定
  103. //        digitalWrite(pinIN1,LOW);     // 下面俩个 使直流电机针转
  104. //        digitalWrite(pinIN2,HIGH);
  105. //
  106. //        // right wheel
  107. //        digitalWrite(pinIN3,HIGH);      // 转动: 注意按照我之前的接线,这里要跟前面的轮子的设定相反,方向才相同
  108. //        digitalWrite(pinIN4,HIGH);
  109.     }

  110.     // 右转
  111.     void right() {
  112.         Serial.println("----right");
  113.         // left wheel
  114. //        digitalWrite(pinIN1,HIGH);     // 下面俩个 使直流电机针转
  115. //        digitalWrite(pinIN2,HIGH);
  116. //
  117. //        // right wheel
  118. //        analogWrite(pinENB,speedENB);  // 速度设定
  119. //        digitalWrite(pinIN3,HIGH);      // 转动: 注意按照我之前的接线,这里要跟前面的轮子的设定相反,方向才相同
  120. //        digitalWrite(pinIN4,LOW);
  121.     }
复制代码






[pre lang="python" line="1"]import android
import sys
import time
droid=android.Android()
droid.bluetoothConnect('00001101-0000-1000-8000-00805F9B34FB')

# define the cmd list
cmd_listk = ["g", "b", "l", "r", "s", "x"]
cmd_listv = ["Go", "Back", "Left", "Right", "Stop", "Exit App"]

count = 4
while count > 0:
    for i in cmd_listk:
        time.sleep(1)
        start = time.time()
        droid.bluetoothWrite(i)
        print "  %s start %s" % (i, start)
        while True:
            strArduino = droid.bluetoothReadLine()
            if len(strArduino) > 0:
                cost = time.time() - start
                print("android: %s, cost %s" % (strArduino[1], cost))
                break

    count = count - 1[/code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-9-13 22:02:26 | 显示全部楼层
我用的,没有延时
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 20:50 , Processed in 0.034986 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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