극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기12

in kr-dev 커뮤니티2 years ago

안녕하세요! Jimae입니다.

오늘은 블루투스 모듈을 쓰기위해서 사용하는 라이브러리에 대해 설명할까 합니다.

우선은 이 라이브러리를 사용하기 위해서는 추가로 설치하거나 다운로드 할필요가 없습니다.

아두이노 내부에 있거든요.

그래서 예제 소스부터 보는게 빠를것 같습니다.

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(3, 4); //bluetooth module Tx:Digital 3 Rx:Digital 4


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  BTSerial.begin(9600); // 블루투스 초기화

}


void loop() {
  // put your main code here, to run repeatedly:
  if(BTSerial.available()) //BTSerial 값이 있으면
  {
    char blueChar = (char)BTSerial.read();
    Serial.print("%c",blueChar);
  }
}

이 예제소스는 블루투스 모듈에서 데이터를 읽어서 시리얼을 통해서 PC로 데이터를 보여주는 예제 프로그램입니다.

image.png

#include <SoftwareSerial.h>

우선 라이브러리를 사용하려면 위의 include 명령어로 SoftwareSerial 해더파일을 불러온 다음

SoftwareSerial BTSerial(3, 4);

이렇게 선언을 하면 됩니다.

3, 4 번 Pin을 시리얼 통신으로 사용하겠다고 표시한것 입니다.

물론 주석처리로 되어있지만

Tx Pin은 3번이고 Rx Pin은 4번입니다.

BTSerial.begin(9600); // 블루투스 초기화

그 다음 setup함수에서 모듈을 초기화 해주는대 시리얼통신 이다보니 통신속도를 설정해줍니다.

참고로 대다수 블루투스 모듈은 9600입니다. (다른속도로도 수정이 가능)

  if(BTSerial.available()) //BTSerial 값이 있으면
  {
    char blueChar = (char)BTSerial.read();
    Serial.print("%c",blueChar);
  }

그 다음 loop 함수에서 이렇게 사용하면 되는대

BTSerial.available()

블루투스에서 데이터가 넘어온다면 이함수가 동작하고

BTSerial.read();

넘어온 데이터 한글자를 이렇게 읽어드립니다.

loop 함수에서는 delay 라던지 타이머를 사용하고있지 않아

실시간으로 BTSerial.available() 블루투스에 데이터를 감지하여 동작하기 위해 사용되어 집니다.

소프트 시리얼 라이브러리 같은경우 일반 시리얼 통신과 사용하는방법이 얼추 비슷하여 사용하기 쉬울것입니다.

물론 내부 원리에 대해 알려면 공부는 해야하지만 라이브러리로 되어있으니 가져다 씁시다!!

오늘은 여기까지 다들 좋은하루 되세요.

극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기1
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기2
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기3
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기4
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기5
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기6
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기7
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기8
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기9
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기10
극한의 아두이노 DIY생활 - 식물상태를 알려주는 기기11

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.029
BTC 57839.82
ETH 3132.70
USDT 1.00
SBD 2.43