ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 아두이노와 아두이노의 시리얼 통신하기
    Arduino/Serial 통신 2020. 11. 5. 17:51

     

    1. 두 아두이노의 통신으로 LED 켜고 끄기

    아두이노는 통신 시에 핀이 정해져 있다.
    Rx와 Tx핀에 연결해야 한다.

    신호를 보낼 시에 Serial.write함수 혹은 Serial.print함수를 이용한다.

    동기화를 하자.

    동기화는 데이터를 주는 쪽도 1초 간격으로 받는 쪽도 1초 간격으로 받도록 한다.
    송신에서 신호를 보내고 받는 쪽에서 1초마다 읽어 LED를 켜고 끈다.
    1초마다 신호를 보내자.

     

    하드웨어의 구성
    마스터 쪽 5V선을 연결하고 슬레이브의 Vin핀에 연결하고 (검은색선)
    마스터의 GND와 슬레이브의 GND를 연결 서로 연결한다. (흰선)
    마스터의 GND핀과 빵판의 GND에 연결하고 (붉은선)
    마스터의 Tx핀과 슬레이브의 Rx에 연결한다. 흰선
    슬레이브의 13번핀과 LED를 연결(노란선) 빵판의 GND와 슬레이브의 GND를 연결(초록색선)

     

    아래는 Master에서의 소스 코드이다.

    Master 소스 코드

    더보기
    //  Master : Sender
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    
      //  데이터 전송
      Serial.print("1");
    
      delay(1000);
    
      Serial.print("0");
    
      delay(1000);
    }

     

     

    아래는 Slave에서의 소스 코드이다.

    Slave 소스 코드

    더보기
    //  받은 신호에 대해 1이면 LED on 그렇지 않으면 LED off
    //  Slave : Receiver
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
    
      pinMode(13,OUTPUT); //  LED를 아두이노의 13번 핀에 연결
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    
      if (Serial.available())
      {
        char data = (char)Serial.read();
    
        if (data == '1')
        {
          digitalWrite(13, HIGH);
        }
        else
        {
          digitalWrite(13, LOW);
        }
      }
    }

     

     

     

     

     

    2. 위의 내용에 소리 센서를 추가해서, 특정 소리 구간에서 LED의 켜고 끄기

    Master와 소리 센서 간의 하드웨어 연결을 한다.

    소리 센서는 아두이노의 A0핀에 연결한다.

    그리고 Slave는 기존의 LED와의 연결을 유지하고, 두 아두이노 간에 연결을 위와 같이 한다.

    아래에서 사운드 센서에 대한 내용을 보도록 하자.

     

    designatedroom87.tistory.com/250?category=899521

     

    사운드 센서의 연결과 기본 출력

    네 선이 있는데, D0와 A0는 각 각 Digital Output과 Analog Output을 의미한다. 우리는 A0를 사용한다. A0선을 아두이노의 A1핀에 연결한다. 그리고 +는 빵판의 VCC에, -는 빵판의 GND에 연결한다. 빵판의 마지..

    designatedroom87.tistory.com

    Master 소스 코드

    더보기
    //  소리 질렀을 때, 불 켜지기
    //  마스터에 마이크 센서를 연결한다. 그리고 나서 슬레이브와 연결한다.
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    
      if(analogRead(A0) > 580 || analogRead(A0) < 530)
      {
        //Serial.println(analogRead(A0));
        //  데이터 전송
        Serial.print("1");
      }
      else
      {
        Serial.print("0");
      }
      delay(1000);
    }

     

     

    Slave 소스 코드는 위와 내용이 같다.

    혹시 모르니 다시 적는다.

    Slave 소스 코드

    더보기
    //  받은 신호에 대해 1이면 LED on 그렇지 않으면 LED off
    //  Slave : Receiver
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
    
      pinMode(13,OUTPUT); //  LED를 아두이노의 13번 핀에 연결
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    
      if (Serial.available())
      {
        char data = (char)Serial.read();
    
        if (data == '1')
        {
          digitalWrite(13, HIGH);
        }
        else
        {
          digitalWrite(13, LOW);
        }
      }
    }

     

    댓글

Designed by Tistory.