#define MASTER 0
void setup() {
Serial.begin(9600);
if (MASTER) {
// Code cho Master Arduino (Arduino Mega)
Serial1.begin(9600); // Sử dụng Serial1 cho kết nối với các Slave
}
}
void loop() {
if (MASTER) {
// Code cho Master Arduino (Arduino Mega)
for (int slaveId = 1; slaveId <= 4; slaveId++) {
// Gửi yêu cầu tới mỗi Slave
Serial1.write("Read temperature data");
delay(100); // Đợi 100ms để Slave xử lý yêu cầu
// Chờ phản hồi từ Slave
unsigned long startTime = millis(); // Thời điểm bắt đầu chờ phản hồi
while (!Serial1.available()) {
if (millis() - startTime > 1000) {
// Nếu quá thời gian chờ (1 giây) mà không nhận được phản hồi, thoát khỏi vòng lặp
break;
}
}
// Đọc và hiển thị phản hồi từ Slave (nếu có)
while (Serial1.available() > 0) {
int temperature = Serial1.read();
Serial.print("Temperature from Slave ");
Serial.print(slaveId);
Serial.print(": ");
Serial.println(temperature);
}
delay(200); // Chờ 200ms trước khi gửi yêu cầu tới Slave tiếp theo
}
delay(600000); // Chờ 10 phút trước khi gửi yêu cầu tiếp theo
} else {
// Code cho Slave Arduino (Arduino Uno)
if (Serial.available() > 0) {
String request = Serial.readString();
if (request == "Read temperature data") {
int temperature = random(20, 40); // Giả định dữ liệu nhiệt độ
Serial.write(temperature);
}
}
}
}