2017-09-29 1 views
1

Ich habe ein Problem, an dem ich seit einiger Zeit gearbeitet habe. Ich habe eine Arduino Uno Platine und eine HC-05 Bluetooth-Transceiver mit TTL-Ausgänge.Prints ganzzahliger Wert, Arduino HC-05 Bluetooth-Modul

Die Anschlüsse sind wie folgt:

RX (HC_05) --> TX (Arduino UNO) 

TX (HC_05) --> RX (Arduino UNO) 

GND (HC-05) --> GND (Arduino UNO) 

+5V (HC-05) --> +5V (Arduino UNO) 

Ich habe folgendes Arduino Code:

#include <SoftwareSerial.h> 
SoftwareSerial BTSerial(10, 11); // RX | TX 

void setup() 
{ 
    Serial.begin(9600); 
    BTSerial.begin(38400); // HC-05 default speed in AT command more 
    pinMode(9, OUTPUT); // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode 
    pinMode(10, INPUT); 
    pinMode(11, OUTPUT); 

    digitalWrite(9, HIGH); 
    Serial.println("Enter AT commands:"); 
    BTSerial.println("Welcome to ARBA-Beat"); 
} 


void loop() 
{ 

    // Keep reading from HC-05 and send to Arduino Serial Monitor 
    if (BTSerial.available()) { 
    Serial.println(BTSerial.read()); 
    BTSerial.write(BTSerial.read()); 
    BTSerial.flush(); 
    }  
} 

ich eine Verbindung mit dem Bluetooth-Modul durch die Bluetooth-Terminal Android App. Alles funktioniert gut (sogar die Lichter auf dem Bluetooth-Modul). Aber wenn ich ein Zeichen aus dem Telefon zu Arduino senden, erhalte ich die folgende Ausgabe:

Text zu Bluetooth-Modul gesendet - ein

enter image description here

helfen bitte

danke

+0

Sie rufen 'BTSerial.read () zweimal in verschiedenen Funktionen, was bedeuten kann, dass zwei Werte aus der Warteschlange entfernt werden. Versuchen Sie, es in einer Variablen zu speichern, bevor Sie es an Terminal absetzen/etwas mit dem Wert tun. –

+0

@MorrisonChang Ich habe versucht, was auch immer Sie gesagt haben, jetzt bekomme ich boxförmige Werte –

+0

Ich würde empfehlen, den Wert und die Umwandlung in hex/binary und das Senden an alle Debug/Log-Sitzung, die Sie verwenden, um zu sehen, ob Sie wirklich bekommen Wert, den Sie senden oder bei dem etwas anderes passiert (zusätzliche Zeichen/big-little-endian-Problem/crlf-Problem). Wenn Sie einem Lernprogramm folgen, möchten Sie möglicherweise einen Link dazu erstellen und darauf hinweisen, welcher Schritt fehlgeschlagen ist. –

Antwort

0

Ich hatte genau das gleiche Problem. Haben Sie versucht, den HC-05 bei 9600 zu laufen? Probieren Sie den folgenden Code aus (mit Ihren Pins). Ich benutzte den Code, um ein Relais auf Pin 2 zu schalten, aber Sie könnten eine LED verwenden, wenn Sie möchten. Ich benutzte die gleiche Bluetooth-Anwendung und es funktionierte gut:

#include <SoftwareSerial.h> 
int relay = 2; // Set pin for relay control 

SoftwareSerial bleserial(8,9); 

// setup the relay output and the bluetooth serial, and the serial monitor (if you want to print the outputs) 
void setup() {     
    // set relay pin as output. 
    pinMode(relay, OUTPUT); 
    // start bluetooth and serial monitor 
    bleserial.begin(9600); 
    Serial.begin(9600); 

} 

void loop() { 

    if(bleserial.available()){ 

    char char1 = bleserial.read(); 
    Serial.println(char1); 
    // Set protocol that you want to turn on the light bulb, I chose 1 and 0 as on and off, respectively 

    if(char1=='1'){ 
     Serial.println("ON"); 
     digitalWrite(relay,LOW); 
    } else if (char1=='0'){ 
     digitalWrite(relay,HIGH); 
    } 
    } 

} 

Wenn Sie die Verdrahtung usw. überprüfen Sie den Eintrag auf meinem Blog sehen wollen:

https://engineersportal.com/blog/2017/11/15/bluetooth-home-automation-light-bulb-switch-using-an-hc-05-a-relay-and-arduino

Verwandte Themen