2014-03-04 40 views
0

我几天前刚刚开始Arduino编程,现在我想将电位计读数传输到移动设备。我使用Arduino的莱昂纳多和蓝牙伴侣银和下面的代码来传输数据:Arduino-Android:连续数据传输

#include <SoftwareSerial.h> 

int bluetoothTx = 2; // TX-O pin of bluetooth mate, Arduino D2 
int bluetoothRx = 3; // RX-I pin of bluetooth mate, Arduino D3 
int val; 
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); 

void setup() 
{ 
    Serial.begin(9600); // Begin the serial monitor at 9600bps 
    bluetooth.begin(115200); // The Bluetooth Mate defaults to 115200bps 
    bluetooth.print("$"); // Print three times individually 
    bluetooth.print("$"); 
    bluetooth.print("$"); // Enter command mode 
    delay(100); // Short delay, wait for the Mate to send back CMD 
    bluetooth.println("U,9600,N"); // Temporarily Change the baudrate to 9600, no parity 
    bluetooth.begin(9600); // Start bluetooth serial at 9600 
} 

void loop() 
{ 
    int val = analogRead(A0); 

    if(bluetooth.available()) // If the bluetooth sent any characters 
    { 
    Serial.print(val); 
    } 
    if(Serial.available()) // If stuff was typed in the serial monitor 
    { 
     bluetooth.print(val); 
    } 
    delay(1000); 
    // and loop forever and ever! 
} 

我发现蓝牙连接estublished没有任何错误,但我没有得到移动设备上的任何数据。我改变了代码(例如,在串行监视器上没有if语句/打印电位计数据,并且从串行监视器读取数据到传输到移动设备中),只有在串行监视器中输入任何值时,我才能获取移动设备中的数据。如果有人能提出可能的解决方案来解决问题,我将非常感激。

+0

当您发送数据时使用'bluetooth.println(val);' – alexmac

+0

使用println(val),它不起作用 – MKS

回答

0
if(bluetooth.available()) // If the bluetooth sent any characters 
    { 
    Serial.print(val); 
    } 
    if(Serial.available()) // If stuff was typed in the serial monitor 
    { 
     bluetooth.print(val); 
    } 

这显然是打破在两个方面:

  1. 你做产生的不相关的输入数据是可用的输出队伍。没有明显的原因,为什么接收蓝牙应该触发本地打印串口监视器上的电位器值,或者为什么从串口监视器接收应该触发电位计值的蓝牙打印。

  2. 您正在检查串行和蓝牙可用()方法,但您从未阅读过这些字符。因此输入缓冲区可能会溢出。

可能是你最好的解决办法是,如果语句简单地删除,始终呼应价值两个输出在一个循环中,忽视了投入 - 除非有某种原因,这些都是非常重要的。

+0

我做了更改,现在代码如下所示: loop(){(0) val = analogRead(A0); Serial.println(val); bluetooth.println(val); 延迟(1000); } } 它显示输出在串行监视器,但不是在移动设备 – MKS

+0

好吧,这是一个很好的测试使用终端。我没有做任何与蓝牙的工作。波特率你慢下来的代码,我会建议在9600开始。我已经做了很多与Arduino的工作,但没有蓝牙和通过无线电(xbee)串行很多。我建议在获取数据时添加一个闪烁的LED。发送数据时不同的led。在解决不同的问题时帮助我。 – alexmac