9-3 두 대의 아두이노를 이용하여 마스터 / 슬레이브 통신

공부하는 학생 A·2024년 2월 19일
0

아두이노 

목록 보기
46/74

회로 구성

두 개의 아두이노를 사용하여 아두이노 1에서 아두이노 2로 데이터를 전송하는 실험을 해보자. 아두이노 1의 TX 포트(1번)를 통하여 1과 0을 1초 간격으로 아두이노 2의 RX 포트(0번)로 보낸다. 아두이노 2는 RX 포트를 통하여 데이터를 수신하며, '1'이 수신되면 LED를 ON시키며, '0'이 수신되면 LED를 OFF 시킨다.

스케치 9-2 두 대의 아두이노 이용 통신 실험 - 마스터 아두이노

void setup() {
  Serial.begin(9600);
}
void loop() {
  // put your main code here, to run repeatedly:
  int LED_ON = 1;
  int LED_OFF = 0;
  Serial.write(LED_ON); //아두이노 2로 ‘1’를 보냄
  Serial.println(LED_ON); // 시리얼 화면에 출력
  delay(1000);
  Serial.write(LED_OFF); //아두이노 2로 ‘0’를 보냄
  Serial.println(LED_OFF);
  delay(1000);
}

스케치 9-2 분석

스케치 9-2를 아두이노 1(마스터)에 업로드 한다. Serial.write() 함수는 정수 '1'과 '0'을 아두이노 2(슬레이브)로 전송하며, 1초 간격의 지연을 사용하였다.

스케치 9-3 두 대의 아두이노 이용 통신 실험 - 슬레이브 아두이노

void setup() {
  Serial.begin(9600);
  pinMode(13,OUTPUT); // LED 출력
}
void loop() {
  if(Serial.available()){
    int received_data = Serial.read(); // 수신된 데이터 읽기
    Serial.println(received_data); // 수신된 데이터 화면 출력
    if (received_data == 1){
      digitalWrite(13, HIGH); // 수신된 데이터가 ‘1’이면 LED 켜기
    }
    else{
      digitalWrite(13, LOW);
    }
  }
}

스케치 9-3 분석

먼저 Serial.available() 함수는 Serial 버퍼에 데이터가 있는지를 검사한다. 만약 버퍼에 데이터가 있으면 Serial.read() 함수를 이용하여 데이터를 복사한 후 received_data에 저장한다. receive_data 변수에 저장된 데이터가 '1'이면 아두이노 2의 13번 핀에 HIGH 신호(LED ON)를 '0'이면 LOW 신호(LED_OFF)를 보낸다. 다른 값은 무시한다.

스케치 9-2, 9-3 실행결과

마스터

슬레이브

오류

전송되는 것은 확인이 되지만 사실 이런 문제가 뜬다 왜 이럴까?

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
Failed uploading: uploading error: exit status 1

profile
Shine like a star, Just like a star

0개의 댓글