블루투스로 아두이노 I2C LCD TEXT 제어

준비

 

부품 목록

번호 부품명 수량 기능 판매처
 1  WAT-Arduino128  1 아두이노 https://kit128.com/goods/view?no=64
 2 Bluetooth Module HC-06 (5V)  1 블루투스 통신 https://kit128.com/goods/view?no=65
3 I2C LCD 1 TEXT 출력 https://kit128.com/goods/view?no=80

 

WAT-Arduino128 Bluetooth Module HC-06 (5V) I2C LCD

 

핀 연결

아래와 같이 블루투스 모듈을  WAT-Arduino128 핀을 연결합니다.
WAT-Arduino128 의 경우 HC-06 모듈 전용핀을 제공하여 4핀 커넥터로 바로 연결 가능합니다.

HC-06 핀 WAT-Arduino128 핀
RXD PD3 (TXD)
TXD PD2 (RXD)
GND GND
VCC 5V

 

아래와 같이 I2C LCD와 WAT-Arduino128 핀을 연결합니다.

I2C LCD핀 WAT-Arduino128 핀
SCL PD0 ( SCL)
SDA PD1 (SDA)
VCC 5V
GND GND

 

 

소스코드

최신 소스코드는 [파일]=>[예제]=>[WhiteAT UNO] =>[Bluetooth_I2CLCD] 에 있습니다.

/*
Bluetooth 로 I2C LCD 제어 예제
32 bytes의 데이터와 '\n' 코드를 입력 받아
LCD의 2줄에 출력



출처: http://whiteat.com/Arduino

연결

. PD0 (SCL) -> I2C SCL
. PD1 (SDA) -> I2C SDA
. PD2 (TXD) -> Bluetooth TX
. PD3 (RXD) -> Bluetooth RX

*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

String strLine1="WAT-Arduino128 ";
String strLine2="LCD I2C Module ";
byte backlight = HIGH;

// I2C LCD 기본 어드레스는 0x27
LiquidCrystal_I2C lcd(0x27);

// 프로그램 시작 - 초기화 작업
void setup()
{
Serial.begin(115200); // 아두이노 시리얼 모니터 화면
Serial.print("Connecting Serial to PC");
Serial1.begin(9600); // HC-06 용 시리얼
Serial1.print("AT+NAME BT - Whiteat.com\n");

// 자동으로 I2C address 설정
lcd = LiquidCrystal_I2C(GetAddress());
lcd.begin (16,2); // 16 x 2
}

// 계속 실행할 무한 루프
void loop()
{
lcd.setBacklight(backlight);
lcd.setCursor(0,0);
lcd.print(strLine1);
lcd.setCursor(0,1);
lcd.print(strLine2);
delay(1000);
}

String inString;
void serialEvent1()
{
while (Serial1.available())
{
int inChar = Serial1.read();
if ( isAlphaNumeric(inChar) || inChar=='-')
{
inString += (char)inChar;
}
else if (inChar == '\n')
{
if(inString.length()>=32)
{
strLine1 = inString.substring(0,16); // line1 데이터 추출
strLine2 = inString.substring(16,32); // line2 데이터 추출
Serial.print("LIne1:");
Serial.println(strLine1);
Serial.print("LIne2:");
Serial.println(strLine2);
}

else if(inString.length()==1)
{
if(inString[0]=='1')
{
backlight = HIGH;
}
else
{
backlight = LOW;
}
}
else
{
Serial.print("Short Data Retry [Data:");
Serial.print(inString);
Serial.println("]");
}
inString = "";
}
}
}


// I2C address 찾기
byte GetAddress()
{
 Wire.begin();
 for (byte i = 1; i < 120; i++)
 {
 Wire.beginTransmission(i);
 if (Wire.endTransmission() == 0)
 {
 Serial.print("Found address: ");
 Serial.print(i, DEC);
 Serial.print(" (0x");
 Serial.print(i, HEX);
 Serial.println(")");
 return i;
 delay(10);
 }
 }
}

 

 

 

1 댓글

  1. 화이트앳 글쓴이응답

    안녕하세요
    키트128입니다.

    여기에 사용된 블루투스 모듈은 시리얼 통신 방식입니다.
    Seial.print() 로 제어 가능합니다.

    감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다