Du machst es uns einfacher, wenn du den von dir eingesetzten Code hier direkt in Code-Tags zeigst.
Und dann evtl. noch die von dir beschriebenen Variablen nennst. Ohne das, stochern wir im trüben und können nicht helfen.
#include <SoftwareSerial.h> // Software Serial Port
int RxD = 7;
int TxD = 6;
int PINBUTTON = 9; // pin of button
int DEBUG_ENABLED = 1;
String retSymb = "+RTINQ="; // start symble when there's any return
String slaveName = ";SeeedBTSlave"; // caution that ';'must be included, and make sure the slave name is right.
int nameIndex = 0;
int addrIndex = 0;
String recvBuf;
String slaveAddr;
String connectCmd = "\r\n+CONN=";
SoftwareSerial blueToothSerial(RxD,TxD);
void setup()
{
Serial.begin(9600);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
pinMode(PINBUTTON, INPUT);
setupBlueToothConnection();
//wait 1s and flush the serial buffer
delay(1000);
Serial.flush();
blueToothSerial.flush();
}
void loop()
{
static unsigned char state = 90; // led off
blueToothSerial.print(state);
delay(10);
Serial.println("button off");
}
void setupBlueToothConnection()
{
blueToothSerial.begin(38400); // Set BluetoothBee BaudRate to default baud rate 38400
blueToothSerial.print("\r\n+STWMOD=1\r\n"); // set the bluetooth work in master mode
blueToothSerial.print("\r\n+STNA=SeeedBTMaster\r\n"); // set the bluetooth name as "SeeedBTMaster"
blueToothSerial.print("\r\n+STAUTO=0\r\n"); // Auto-connection is forbidden here
delay(2000); // This delay is required.
blueToothSerial.flush();
blueToothSerial.print("\r\n+INQ=1\r\n"); //make the master inquire
Serial.println("Master is inquiring!");
delay(2000); // This delay is required.
//find the target slave
char recvChar;
while(1)
{
if(blueToothSerial.available())
{
recvChar = blueToothSerial.read();
recvBuf += recvChar;
nameIndex = recvBuf.indexOf(slaveName); //get the position of slave name
//nameIndex -= 1;
//decrease the ';' in front of the slave name, to get the position of the end of the slave address
if ( nameIndex != -1 )
{
//Serial.print(recvBuf);
addrIndex = (recvBuf.indexOf(retSymb,(nameIndex - retSymb.length()- 18) ) + retSymb.length());//get the start position of slave address
slaveAddr = recvBuf.substring(addrIndex, nameIndex);//get the string of slave address
break;
}
}
}
//form the full connection command
connectCmd += slaveAddr;
connectCmd += "\r\n";
int connectOK = 0;
Serial.print("Connecting to slave:");
Serial.print(slaveAddr);
Serial.println(slaveName);
//connecting the slave till they are connected
do
{
blueToothSerial.print(connectCmd);//send connection command
recvBuf = "";
while(1)
{
if(blueToothSerial.available()){
recvChar = blueToothSerial.read();
recvBuf += recvChar;
if(recvBuf.indexOf("CONNECT:OK") != -1)
{
connectOK = 1;
Serial.println("Connected!");
blueToothSerial.print("Connected!");
break;
}
else if(recvBuf.indexOf("CONNECT:FAIL") != -1)
{
Serial.println("Connect again!");
break;
}
}
}
}while(0 == connectOK);
}
Slave_Code
#include <SoftwareSerial.h> //Software Serial Port
int RxD = 7;
int TxD = 6;
int PINLED = 9;
#define LEDON() digitalWrite(PINLED, HIGH)
#define LEDOFF() digitalWrite(PINLED, LOW)
int DEBUG_ENABLED = 1;
SoftwareSerial blueToothSerial(RxD,TxD);
void setup()
{
Serial.begin(9600);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
pinMode(PINLED, OUTPUT);
LEDOFF();
setupBlueToothConnection();
}
void loop()
{
char recvChar;
while(1)
{
if(blueToothSerial.available())
{//check if there's any data sent from the remote bluetooth shield
recvChar = blueToothSerial.read();
Serial.println(recvChar);
}
}
}
void setupBlueToothConnection()
{
blueToothSerial.begin(38400); // Set BluetoothBee BaudRate to default baud rate 38400
blueToothSerial.print("\r\n+STWMOD=0\r\n"); // set the bluetooth work in slave mode
blueToothSerial.print("\r\n+STNA=SeeedBTSlave\r\n"); // set the bluetooth name as "SeeedBTSlave"
blueToothSerial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
blueToothSerial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
delay(2000); // This delay is required.
blueToothSerial.print("\r\n+INQ=1\r\n"); // make the slave bluetooth inquirable
Serial.println("The slave bluetooth is inquirable!");
delay(2000); // This delay is required.
blueToothSerial.flush();
}
So also des is der Grundcode vom master und vom slave.
Im Master Code wird die Variable “state” erzeugt und an den Slave übermittelt.
Im Slave Code wird die übermittelte Variable zu “recvChar”.
Des is alles kein Problem, weil im Mastercode nur eine Variable erzeugt wird.
Also z.B. ein Taster der eine LED schaltet.
Wenn im Mastercode zwei oder mehr Variablen für mehr Taster erzeugt werden, wie kann ich diese dann im
Slave code wieder “aufdrößeln”, da bei meinem Code die mehreren Variablen zusammengewürfelt werden würde.
Hansbeder:
Kann mir jemand sagen wie ich das lösen kann.
Jurs und Serenifly sind fähige und hilfsbereite Jungs hier im Forum.
Das übertragen mit Bluetooth ist genauso wie seriell, nur mit ohne Kabel. Da gibt es genau für dein Problem etliche Threads hier. Ich werd mal was suchen.
So also des is der Grundcode vom master und vom slave.
Im Master Code wird die Variable "state" erzeugt und an den Slave übermittelt.
Im Slave Code wird die übermittelte Variable zu "recvChar".
Des is alles kein Problem, weil im Mastercode nur eine Variable erzeugt wird.
Also z.B. ein Taster der eine LED schaltet.
Wenn im Mastercode zwei oder mehr Variablen für mehr Taster erzeugt werden, wie kann ich diese dann im
Slave code wieder "aufdrößeln", da bei meinem Code die mehreren Variablen zusammengewürfelt werden würde.
Kann mir jemand sagen wie ich das lösen kann
Nur kurz zu Erklärung:
Die Variable "state oder recvChar" wird nicht im Master bzw. Slave erzeugt sondern zur Weitergabe der Daten mit der Information gefüllt.
Du must für deine verschiedenen Schalter und Led's auch nicht genau so viele Variablen anlegen und füllen, sondern kannst die Daten zusammensetzen und in eine Variable (hier state) übergeben und dann senden.
Im Client (Empfänger) werden die Daten dann wieder aus der Variable (hier recvChar) entnommen und mit einer entsprechenden Funktion getrennt, damit diese die zugehörigen Led's zum Leuchten bringen.
Diese Prozedur wirst du auch in den von ElEspanol und Serenifly geposteten Links wiederfinden.