2017-02-11 4 views
0

Ich möchte eine Bluetooth-Kommunikation zwischen 2 Arduino mit HC05 (Master) und HC06 (Slave) durchführen. Ich Erfolg mit der Paarung der 2 Module, aber wenn ich ein Byte, das ich von einem Potentiometer lesen senden, erhalten die Slave einen anderen Wert, der kann 128, -1, 248. Unten sind die Arduino-CodesKommunikation zwischen 2 Arduino mit HC05 und HC06 Module

Arduino Master-HC05

#include <SoftwareSerial.h> 
SoftwareSerial BTserial(2, 3); // RX | TX 
// Connect the HC-05 TX to Arduino pin 2 RX. 
// Connect the HC-05 RX to Arduino pin 3 TX through a voltage divider. 
int potpin = 0; // analog pin used to connect the potentiometer 

void setup() 
{ 
    // start the serial communication with the host computer 
    Serial.begin(9600); 
    Serial.println("Arduino with HC-05 is ready"); 

    // start communication with the HC-05 using 9600 
    BTserial.begin(9600); 
    Serial.println("BTserial started at 9600"); 
} 

void loop() 
{ 
    BTserial.println(analogRead(potpin)); 
    delay(100); 
    Serial.println(analogRead(potpin)); 
} 

Arduino Slave-HC06

#include <SoftwareSerial.h> 
#include <Servo.h> 
Servo myservo; 
SoftwareSerial slave(2, 3); // RX | TX 
// Connect the HC-05 TX to Arduino pin 2 RX. 
// Connect the HC-05 RX to Arduino pin 3 TX through a voltage divider. 
int c = 0; 
int val; 
void setup() 
{ 
    // start the serial communication with the host computer 
    Serial.begin(9600); 
    Serial.println("Arduino with HC-06 is ready"); 

    // start communication with the HC-05 using 9600 
    slave.begin(9600); 
    Serial.println("BTserial started at 9600"); 

    myservo.attach(9); 
} 

void loop() 
{ 

    if (slave.available()) 
    { 
     val= slave.read(); 
     Serial.println(val); 
     val = map(val, 0, 1023, 0, 180); 
     myservo.write(val); 
     delay(15);  
    } 
} 

Sie für jede Antwort danken

Antwort

1

Im Slave skizzieren Sieersetzen soll 10 mit parseInt().

Die Funktion read() liest ein einzelnes Byte. Wenn der Master den ganzzahligen Wert potpin = 130 sendet, wandelt die Funktion println(potpin) ihn in 3 Bytes (codiert als ASCII-Zeichen) um und sendet sie. Auf der Slave-Seite müssen Sie alle eingehenden Bytes lesen, die in einer Zeichenfolge gespeichert sind, und die Zeichenfolge in einer Integralvariablen konvertieren. parseInt() wird das in einer einzigen Zeile tun.

+0

mit slave.parseInt Funktion() macht mich nichts auf der seriellen –

+0

Sie müssen eingehende char in einer Zeichenfolge speichern und es zum Debuggen drucken. Das Referenzbeispiel für [StringToInt] (https://www.arduino.cc/en/Tutorial/StringToIntExample) entspricht dem, was Sie möchten. –

+0

Also, wenn ich es verstehe .... Ich muss parseInt() anstelle von read() setzen, um die Informationen im Slave-Programm zu lesen und die Variablen in den beiden Skizzen zum Beispiel StringtoInt val; Auf diese Weise transformieren wir die mit println gesendeten Informationen von einer Zeichenkette in einen korrekten int-Wert –

Verwandte Themen