2013-11-16 9 views
2

Я пытаюсь передать данные с моего компьютера на плату Arduino. Я могу видеть, что Arduino отправляет на ПК с помощью Tera Term, но я не получаю никаких данных с ПК в Arduino. Я пробовал менять булавки и все там (даже тестируя другую плату bluetooth). Я использую Arduino Mega 2560.Невозможно получить данные с платы Arduino Bluetooth на ПК

Вот код:

#include <AFMotor.h> 
#include <NewPing.h> 
#include <SoftwareSerial.h> 

#define LED 52 

#define RxD 17 
#define TxD 14 

SoftwareSerial blueToothSerial(RxD,TxD); 

void setup() { 
    blueToothSerial.begin(9600); 
    blueToothSerial.println("Bluetooth On please press 1 or 0 blink LED ..."); 
    pinMode(LED, OUTPUT); 
    pinMode(RxD, INPUT); 
    pinMode(TxD, OUTPUT); 
} 

byte BluetoothData; 
void loop() 
{ 
    if (blueToothSerial.available()) 
    { 
    BluetoothData = blueToothSerial.read(); 
    if(BluetoothData=='1'){ // if number 1 pressed... 
     digitalWrite(LED, 1); 
     blueToothSerial.println("LED On D13 ON ! "); 
    } 
    if (BluetoothData=='0'){ // if number 0 pressed... 
     digitalWrite(LED, 0); 
     blueToothSerial.println("LED On D13 Off ! "); 
    } 
    } 
    delay(100); // prepare for next data... 
} 

ответ

0

Согласно этой документации для SoftwareSerial библиотеки, контактный 17 на Arduino Mega 2560 не поддерживает прерывания изменения, так что она не будет работайте с устройством Blutooth. Вместо этого выберите Rx-штырь, указанный в документации (например, 0, 11, 12, 13, 14, 15).

Также для получения данных о Bluetooth-адресах для Arduino необходимо использовать метод SoftwareSerial listen. Попробуйте изменить свой код, чтобы он использовал этот метод, например.

void loop() 
{ 
    blueToothSerial.listen(); 
    if (blueToothSerial.available() > 0) 
    { 
    BluetoothData = blueToothSerial.read(); 
    if(BluetoothData=='1'){ // if number 1 pressed .... 
     digitalWrite(LED, 1); 
     blueToothSerial.println("LED On D13 ON ! "); 
    } 
    if (BluetoothData=='0'){// if number 0 pressed .... 
     digitalWrite(LED, 0); 
     blueToothSerial.println("LED On D13 Off ! "); 
    } 
    } 
} 

Обратите внимание, что при использовании listen() я не думаю, что вызов delay() будет необходим.

+0

Я попробую, но я не думаю, что он разрешит его, так как я попытался подключиться к 14 и 15 также. Я не пишу в Serial, потому что я вижу blueToothSerial.println в терминах Tera, но я не могу получить нажатия клавиш или данные в Arduino. –

+0

Хорошо, дайте ему уйти, потому что контакт 17 на Arduino Mega 2560 определенно не будет использоваться в сценарии, который у вас есть. –

+0

Это не сработало, похоже, что это только один путь. Может быть? Он отлично работает с Arduino до Tera Term, но когда я пытаюсь получить данные от Tera Term до Arduino, он не получает никаких данных. –