인투피온 강좌/아두이노 팁(Tip)

아두이노 매뉴얼 [화분 물공급 키트] - 2

인투피온 2022. 8. 1. 10:00

(이미지 클릭시 구매할 수 있는 링크로 이동됩니다)

 

 

오늘은 화분 물공급 키트에 대해 알아보는

두번째 시간입니다!

 

토양습도센서(FC-28)를 이용한 물공급 키트입니다.

 

 

아직 화분 물공급 키트의 첫번째 강의를 보지 않았을 경우

아래 링크를 통해 먼저 따라해주시기 바랍니다.

 

▼  ▼  ▼

 

https://intopionshop.tistory.com/509

 

 

 

 

Chapter 3. I2C LCD 사용하기

 

I2C LCD 는 무엇일까요?

 

 

IIC/I2C 1602 LCD 액정화면

 

IIC/I2C 1602 LCD 뒷면

 

 

LCD 에 I2C 를 결합한 것이 I2C LCD 입니다.

I2C 를 결합하면 어떤 점이 달라질까요?

 

먼저 기존의 LCD 는 SPI 방식의 통신 방법을 사용합니다.

 

 

SPI 방식의 LCD 회로

 

SPI(Serial Peripheral Interface) 란, 시리얼 통신방식(직렬 통신방식)으로

아래와 같은 포트를 통해 통신을 합니다.

 

 

SLCK Serial Clock
MOSI Master Output Slave Input
MISO Slave Output Master Input
SS Slave Select

 

 

I2C/IIC 방식의 LCD 회로

 

I2C(Inter-Intergrated Circuit) 통식방식은 아래와 같은 포트를 통해 통신을 합니다.

 

 

SDA Serial DATA
SLC Serial CLOCK

 

 

아두이노에서 제공하는 기본 라이브러리인 Wire 를 사용하면

I2C 방식의 SDA, SLC 두 포트를 이용해 통신이 가능합니다.

 

아두이노 우노에서는

SDA 는 ANALOG 4번 핀

SLC는 ANALOG 5번 핀

으로 연결하여 사용할 수 있습니다.

 

 

 

I2C LCD의 주소 알아보기

 

 

IIC/I2C 1602 LCD 를 사용하기 위해서는

먼저 I2C 통신 슬레이브의 주소를 알아야합니다.

 

주소값이 다르면 소스 업로드를 해도 LCD 에 출력 되지 않습니다.

그래서 사용하기 전에 I2C 주소값을 확인해봐야 합니다.

 

 

 

 

I2C LCD 주소 확인 소스코드

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <Wire.h>
 
void setup()
{
  Wire.begin();
  Serial.begin(9600);
  while (!Serial);           
  Serial.println("\nI2C Scanner");
}
 
void loop()
{
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
      nDevices++;
    }
    else if (error==4
    {
      Serial.print("Unknow error at address 0x");
      if (address<16
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
 
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
  delay(5000);
}
 

 

 

I2C 주소 확인을 위한 소스입니다.

 

 

 

 

이렇게 연결을 해주시면 됩니다.

 

그 후 업로드를 하고 시리얼 모니터를 열면

업로드 완료와 함께 시리얼 모니터에 주소값을 출력해줍니다.

 

 

 

 

I2C LCD 라이브러리 추가하기

 

 

I2C LCD 코딩을 하기 전 앞서 해줘야 할 것이 있습니다.

바로 I2C LCD 라이브러리 추가입니다.

 

 

그럼 추가하는 방법을 알아보겠습니다.

 

 

 

 

스케치 → 라이브러리 포함하기 → 라이브러리 관리를 눌러주시면

라이브러리 매니저가 나옵니다.

 

여기에 LIQUIDCRYSTAL I2C 를 검색하시고 아래로 내려

해당 라이브러리를 설치하면 됩니다.

 

 

 

I2C LCD 동작 소스코드

 

 

I2C LCD 를 사용하기 위해선

먼저 LiquidCrystal_I2C.h 와 Wire.h 라이브러리를 추가해 주어야 합니다.

 

이후 객체를 생성해야 하는데 이때 주소값을 알고 있어야 합니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// LCD를 사용하기 위해 라이브러리를 추가합니다.
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
 
// 16x2 LCD객체를 생성합니다. 이때 확인한 I2C의 주소값을 넣어줍니다.
LiquidCrystal_I2C lcd(0x27162);
 
void setup() {
  // 초기 사용시 I2C LCD 초기화 및 LCD 백라이트를 켜줍니다.
  lcd.init();
  lcd.backlight();
}
 
void loop() { 
 
  int value = 1;
  for(value=1; value<4 ; value++)
  {
    if(value=1){
      lcd.setCursor(0,0);           // 0번 행 0번 열부터 출력합니다.
      lcd.print("    Intopion    ");     
      delay(1000);
    }
    if(value=2){
      lcd.setCursor(0,1);           // 1번 행 0번 열부터 출력합니다.
      lcd.print("    Hello!!    ");
      delay(1000);
    }
     if(value=3){
      lcd.setCursor(0,0);           // 0번 행 0번 열부터 출력합니다.
      lcd.print("    Intopion    ");      
      lcd.setCursor(0,1);           // 1번 행 0번 열부터 출력합니다.
      lcd.print(" Hello People!! ");    
      delay(1000);
     }
     
  lcd.clear();
  }
  delay(1000);
 
}
 

 

이후에는 자신이 출력하고자 하는 행 열을 입력해주고

출력 문구를 정하시면 됩니다.

 

lcd.setCursor(0,0);

lcd.print(" Hello!! ");

이때 LCD 한 행의 크기는 16자리이니 유의해 줍시다.

이제 이걸 업로드하면 아래와 같은 결과가 나옵니다.

 

 

I2C LCD 동작

 

 

 

 

다음 시간엔 챕터 3 으로 LCD 출력과 에 대한

강의를 이어나가도록 하겠습니다!

 

 

감사합니다.

 

 

 

 

 

전자부품 전문 쇼핑몰 인투피온입니다.
필요한 자재에 관한 문의는 홈페이지를 통한 견적 신청, 혹은 전화나 메일로 주시면 빠른 회신을 드릴 수 있도록 하겠습니다.

▶ 홈페이지: http://intopion.com/
▶ 전화: 02-2615-7278
▶ FAX : 02-6124-4242
▶ 메일: intopion@hanmail.net