시리얼 통신

문주은·2020년 12월 30일
1

메디컬IOT

목록 보기
4/13

1. 시리얼 통신이란?

GND : ground로 모든 신호의 기준점이 된다.
RX.TX는 꼬아서 연결한다.

두 기기 간에 통신 속도를 약속하고 송수신 회선을 각각 지정하여 데이터를 주고 받는다.

if(Serial.available()){
	char c = Serial.read();
   Serail.print(c);
}

Serial.available() : 버퍼에 도착한 문자가 있는지 확인한다. (문자가 있으면 참이 된다)
Serail.read() : 시리얼 버퍼에서 글자를 읽어서 돌려준다.

2. 시리얼 모니터로 출력하기

아두이노에서 PC로 보낸다.

  • begin
    Serial.begin(통신 속도);

  • print
    Serial.print(val);
    Serial.print(Val,format);
    //format으로 DEC, BIN, OCT, HEX를 지정하면 val이 10진수, 2진수, 8진수, 16진수로 출력

  • printf

  Serial.printf("-----문자열, 스트링\n");
  char family[] = "Hong";
  String name = "Gildong";
  Serial.printf("성은 %s, 이름은 %s\n",family,name.c_str());
  Serial.printf("-----unsigned long\n");
  unsigned long mil = millis();	//millis() : 프로그램을 실행하는데 걸리는 시간
  Serial.printf("millis()=%u\n",mil);

3. 시리얼 모니터에서 입력받기

PC에서 아두이노로 입력 받는다.
👉 PC에 입력하는 방법?
PC → IDE → (usb 케이블을 통해) → arduino
시리얼 모니터에서 입력 받을 수 있는 방법은 키보드 자판으로 pc에 입력한다.
👉 아두이노에 입력받은 신호를 확인할 수 있는 방법?
LED or 다시 PC로 반환한다.

  • int, float, 문자열 입력받기
    데이터 형식을 정하고 <key, value> 한 쌍으로 주고 받으면 편하다.
void loop(){
	while(Serial.available()){
    	char c = Serial.read();
        if(c =='c'){
        	cnt = Serial.parseInt();
            Serial.printf("count=%d/n",cnt);
        }
    }
}

시리얼 모니터에서 c125 입력
버퍼에서 값이 들어온지 아닌지 확인
입력 버퍼에서 한 글자만 읽어서 반환하고 char c에 입력(이때 c는 key값)
'c'와 같으면 cnt = 125이고 cnt를 출력한다.

명령어를 입력하여 내장 LED를 ON/OFF하는 프로그램
프로그램 실행 후 'm 1' or 'm 0'을 입력한 후 LED 변화를 살펴본다.

    #define LED_PIN LED_BUILTIN
    #define LED_ON LOW
    #define LED_OFF HIGH
    int ledVal;
    void setup() {
      Serial.begin(115200);
      Serial.println();
      pinMode(LED_PIN,OUTPUT);
    }
    void loop() {
      while(Serial.available()){
        char c = Serial.read();
        if(c == 'm'){
          int val = Serial.parseInt();
          ledVal = val? LOW : HIGH;
          digitalWrite(LED_PIN,ledVal);
        }  
      }
    }

digitalWrite(pin, value) : 디지털 핀(pin)에 HIGH를 줄지, LOW를 줄지 입력.

profile
Data Engineer

0개의 댓글