void setup() {
Serial.begin(9600);
}
void loop() {
Serial.write('a');
delay(1000);
Serial.write('b');
delay(1000);
}
void setup() {
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop() {
if(Serial.available()){
char a;
a=Serial.read();
Serial.println(a);
if(a=='a'){
digitalWrite(13,1);
}else if(a=='b'){
digitalWrite(13,0);
}
}
}
기존의 RX,TX가 아닌 다른 핀을 이용해서도 시리얼 통신을 할 수 있다.
https://www.tinkercad.com/things/74af1lrjQMf-/editel
#include <SoftwareSerial.h>
SoftwareSerial s(2,3); // 2:RX 3:TX
void setup() {
Serial.begin(9600);
s.begin(9600);
}
void loop() {
s.write('a');
delay(1000);
s.write('b');
delay(1000);
}
#include <SoftwareSerial.h>
SoftwareSerial s(2,3); // 2:RX 3:TX
char data;
void setup() {
Serial.begin(9600);
s.begin(9600);
pinMode(13,OUTPUT);
}
void loop() {
if(s.available())
{
data = s.read();
Serial.println(data);
}
if(data == 'a')
{
digitalWrite(13,1);
}
else if(data =='b')
{
digitalWrite(13,0);
}
delay(1000);
}
여기서 중요한 점은 양쪽 아두이노 다 delay가 조금이라도 있어야 한다는 것이다. 오른쪽 아두이노는 왼쪽 아두이노의 delay 정도면 충분할듯 아마 delay가 없으면 왼쪽 아두이노에서 보낸 데이터를 충분히 받지 못하고 출력하게 되는지.. 에러값이 들어간다. 또한 왼쪽 아두이노에서도 delay가 없으면 쓰레기 값이 들어간다. 동시에 데이터를 보내서 그런 문제가 생기는게 아닐까라고 예상해본다.