Xbee 송수신 모듈을 이용하여 통신 해보려 합니다.
<<<송신>>>
void setup() {
Serial.begin(9600);
pinMode(2, INPUT);
pinMode(13, OUTPUT);
}
void loop() {
int WTLS = digitalRead(2);
Serial.print("Waterbox0 = ");
Serial.println(WTLS);
if (WTLS == HIGH) {
digitalWrite(13,LOW);
}
else{
digitalWrite(13,HIGH);
}
}
<<<수신>>>
void setup() {
Serial.begin(9600);
Serial.setTimeout(20);
pinMode(13, OUTPUT);
}
void loop() {:
String adress;
int Water;
adress = Serial.readString();
Water = Serial.read();
if (adress == "Waterbox0")
{
if (Water == '0') {
digitalWrite(13, HIGH);
Serial.println("YES");
}
else if (Water == '1') {
digitalWrite(13, LOW);
Serial.println("NO");
}
}
else if (adress == "Waterbox1")
{
digitalWrite(12, HIGH);
}
}
Serial.read() 만 사용 하였을때는 서로 통신 이 잘되었는데
Serial.readString() 을 통해 어떤 송신기에서 온 측정값인지 알고싶어, 사용해 보았습니다.
readString() 과 read()를 같이 사용하니 통신이 되지않았습니다.
readString()과 read() 는 두가지 다 사용할 수는 없는 것인가요 ?
아니면 다른 잘못된 부분이 있는것인가요 ?
아두이노를 배우고 있는 입장에서 독학하려니 너무 어렵습니다.
부디 선처해주셔서 좋은 답변 해주시면 감사하겠습니다.
답변자님,
정보를 공유해 주세요.
어드레스를 문자영역으로 전송하고
입력값을 정수로 전송하면
수신에서 구분해서 받기에 좋습니다.
//
더 간단한 방법은
0x00, 0x01 <-- 보드1 의 입력값
0x10, 0x11 <-- 보드2 의 입력값
0x20, 0x21 <-- 보드3 의 입력값
0x30, 0x31 <-- 보드4 의 입력값
0x40, 0x41 <-- 보드5 의 입력값
0x50, 0x51 <-- 보드6 의 입력값
이런식이 되는거죠
추가문의는 https://www.basic4mcu.com
2018.08.31.
-
채택
질문자가 채택한 답변입니다.
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.