Hi there,
Hope you all doing well.
I'm new to serial communication. My idea is to read integer values from slave using serial communication via the master's serial monitor.
I need to connect 5 other arduinos in this way. I wanted to to check with basics.
I wrote the code for master and a single slave to test this. Used arduino mega for master and uno for slave. And used Tx1,Rx1 for master. But, Serial monitor keep printing only "-1" for all my readings.
My slave code:
//Address informations
#define MasterID 0;
#define myID 1
//ACK byte definitions
#define byte_1_ACK 100
#define byte_2_ACK 101
#define byte_3_ACK 102
#define byte_4_ACK 103
#define byte_5_ACK 104
#define byte_6_ACK 105
int called_ID;
void setup() {
Serial.begin(9600);
//if(!Serial.available());
}
void loop() {
called_ID = Serial.read();
if(called_ID = myID){
while(Serial.read()== byte_1_ACK){
Serial.write(10);
}
while(Serial.read()== byte_2_ACK){
Serial.write(20);
}
while(Serial.read()== byte_3_ACK){
Serial.write(30);
}
while(Serial.read()== byte_4_ACK){
Serial.write(40);
}
while(Serial.read()== byte_5_ACK){
Serial.write(50);
}
while(Serial.read()== byte_6_ACK){
Serial.write(60);
}
called_ID = 0;
}
}
And my Master code is:
//Master program
//Address informations
#define MasterID 0
#define slave_1 1
#define slave_2 2
#define slave_3 3
#define slave_4 4
#define slave_5 5
#define slave_6 6
//ACK byte definitions
#define byte_1_ACK 100
#define byte_2_ACK 101
#define byte_3_ACK 102
#define byte_4_ACK 103
#define byte_5_ACK 104
#define byte_6_ACK 105
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
if (!Serial.available());
if (!Serial1.available());
}
void loop() {
Read_slave_1();
delay(1000);
}
And the Read_slave_1() function is:
int val[5];
void Read_slave_1(){
while(Serial1.available()){
Serial1.write(slave_1);
delay(5);
}
val[0] = Serial1.read();
while(Serial1.available()){
delay(5);
Serial1.write(byte_1_ACK);
}
val[1] = Serial1.read();
while(Serial1.available()){
delay(5);
Serial1.write(byte_2_ACK);
}
val[2] = Serial1.read();
while(Serial1.available()){
delay(5);
Serial1.write(byte_3_ACK);
}
val[3] = Serial1.read();
while(Serial1.available()){
delay(5);
Serial1.write(byte_4_ACK);
}
val[4] = Serial1.read();
while(Serial1.available()){
delay(5);
Serial1.write(byte_5_ACK);
}
val[5] = Serial1.read();
while(Serial1.available()){
delay(5);
Serial1.write(byte_6_ACK);
}
val[6] = Serial1.read();
///////////////////////////////
Serial.print("Slave 1 Readings: ");
Serial.print(val[0]);
Serial.print(" | ");
Serial.print(val[1]);
Serial.print(" | ");
Serial.print(val[2]);
Serial.print(" | ");
Serial.print(val[3]);
Serial.print(" | ");
Serial.print(val[4]);
Serial.print(" | ");
Serial.print(val[5]);
Serial.print(" | ");
Serial.print(val[6]);
Serial.println(" | ");
Serial.println();
Serial.println("****************************************");
delay(100);
}
Would be a great help if any one can help me. And, please be cool, may be my code is wrong as I'm too new to microcontroller programming.
Have a nice day