سلام پروژه من از 3 برد آرداینو تشکیل شده که قراره توسط 3 ماژول rs485 به صورت مستر و اسلیو با هم در تماس باشن , دو تا برد slave هستند و یک مستر حالا چگونه ترتیب ارسال داده ها از slave ها را مشخص کنم امکانش هست کدهای مربوطرو برام ارسال کنید همراح با توضیح سپاسگذارم
کد های خودم فعلا برای یک slave
(مستر)
//#include <SoftwareSerial.h>
//
//SoftwareSerial mySerial(10, 11); // RX, TX
int en = 8;
//////master
int value1 = 0, value2 = 0;
int qw=0;
///////
String stringKamel = “”;
boolean stringAmade = false;
String str2,str3,str4;
void SerialKhan(){
while (Serial.available()) {
char vorudi = (char)Serial.read();
if(vorudi == '\n'){
stringAmade = true;
}else{
stringKamel += vorudi;
}
}
}
void setup() {
// Serial.begin(115200);
Serial.begin(9600);
Serial.setTimeout(250);
while (!Serial) {
}
stringKamel.reserve(200);
pinMode(en,OUTPUT);
pinMode(9,OUTPUT);
digitalWrite(en,HIGH);
}
void loop() {
digitalWrite(en,HIGH);
Serial.print(‘F’);
Serial.println(‘1’);
Serial.flush();
digitalWrite(en,LOW);
SerialKhan();
if(stringAmade){
Serial.println(“hi”);
Serial.println(stringKamel);
int in1 = stringKamel.indexOf(“a”);
in1+=1;
int in2 = stringKamel.indexOf(“b”);
in2-=1;
str2 = stringKamel.substring(in1,in2+1);
Serial.println(str2);
// in2+=2;
// int in3 = stringKamel.indexOf(“c”);
// in3-=1;
// str3 = stringKamel.substring(in2,in3+1);
// Serial.println(str3);
// in3+=2;
// int in4 = stringKamel.indexOf(“e”);
// in4-=1;
// str4 = stringKamel.substring(in3,in4+1);
// int dg = str2.toInt();
// Serial.println(str4);
stringKamel = "";
stringAmade = false;
}
delay(1000);
}
(کد مربوط به slave)
//#include<EEPROM.h>
//#include <SoftwareSerial.h>
//
//SoftwareSerial Serial(2, 3); // RX, TX
int pt = A0;
int enablePin = 8;
float sensorValue,voltageOut;
const int sensorPin = A2;
int temperatureC;
int vliuo, level1;
String stringKamel = “”;
boolean stringAmade = false;
String str2,str3,str4;
void setup() {
// Open Serial communications and wait for port to open:
//Serial.begin(9600);
Serial.begin(9600);
Serial.setTimeout(250);
while (!Serial) {
;
}
stringKamel.reserve(200);
Serial.println(“Goodnight moon!”);
pinMode(enablePin,OUTPUT);
pinMode(pt,INPUT);
pinMode(sensorPin,INPUT);
// set the data rate for the SoftwareSerial port
digitalWrite(enablePin,LOW);
// Serial.println(“Hello, world?”);
}
void loop() { // run over and over
digitalWrite(enablePin,LOW);
SerialKhan();
if(stringAmade){
Serial.println(stringKamel);
int in1 = stringKamel.indexOf(‘1’);
Serial.println(in1);
if(in1){
level1=analogRead(pt);
digitalWrite(enablePin,HIGH);
Serial.print('a');
Serial.print(level1);
Serial.println('b');
Serial.flush();
}
stringKamel = "";
stringAmade = false;
}
// int level2= map(level1,0,1023,0,100);
// int temp= map(level1,0,1023,-100,100);
//
// Serial.print(“b”);
// Serial.print(level2);
// Serial.print(“c”);
// Serial.print(temp);
// Serial.println(“e”);
////////////////
//sensorValue = analogRead(sensorPin);
// voltageOut = (sensorValue * 5000.0) / 1023.0;
// temperatureC = voltageOut / 10;
delay(500);
}
void SerialKhan(){
while (Serial.available()) {
char vorudi = (char)Serial.read();
if(vorudi == '\n'){
stringAmade = true;
}else{
stringKamel += vorudi;
}
}
}