오늘은 화분 물공급 키트에 대해 알아보는
두번째 시간입니다!
토양습도센서(FC-28)를 이용한 물공급 키트입니다.
아직 화분 물공급 키트의 첫번째 강의를 보지 않았을 경우
아래 링크를 통해 먼저 따라해주시기 바랍니다.
▼ ▼ ▼
https://intopionshop.tistory.com/509
Chapter 3. I2C LCD 사용하기
I2C LCD 는 무엇일까요?
LCD 에 I2C 를 결합한 것이 I2C LCD 입니다.
I2C 를 결합하면 어떤 점이 달라질까요?
먼저 기존의 LCD 는 SPI 방식의 통신 방법을 사용합니다.
SPI(Serial Peripheral Interface) 란, 시리얼 통신방식(직렬 통신방식)으로
아래와 같은 포트를 통해 통신을 합니다.
SLCK | Serial Clock |
MOSI | Master Output Slave Input |
MISO | Slave Output Master Input |
SS | Slave Select |
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 주소 확인 소스코드
123456789101112131415161718192021222324252627282930313233343536373839404142434445 #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");elseSerial.println("done\n");delay(5000);}
I2C 주소 확인을 위한 소스입니다.
이렇게 연결을 해주시면 됩니다.
그 후 업로드를 하고 시리얼 모니터를 열면
업로드 완료와 함께 시리얼 모니터에 주소값을 출력해줍니다.
I2C LCD 라이브러리 추가하기
I2C LCD 코딩을 하기 전 앞서 해줘야 할 것이 있습니다.
바로 I2C LCD 라이브러리 추가입니다.
그럼 추가하는 방법을 알아보겠습니다.
스케치 → 라이브러리 포함하기 → 라이브러리 관리를 눌러주시면
라이브러리 매니저가 나옵니다.
여기에 LIQUIDCRYSTAL I2C 를 검색하시고 아래로 내려
해당 라이브러리를 설치하면 됩니다.
I2C LCD 동작 소스코드
I2C LCD 를 사용하기 위해선
먼저 LiquidCrystal_I2C.h 와 Wire.h 라이브러리를 추가해 주어야 합니다.
이후 객체를 생성해야 하는데 이때 주소값을 알고 있어야 합니다.
1234567891011121314151617181920212223242526272829303132333435363738394041 // LCD를 사용하기 위해 라이브러리를 추가합니다.#include <LiquidCrystal_I2C.h>#include <Wire.h>// 16x2 LCD객체를 생성합니다. 이때 확인한 I2C의 주소값을 넣어줍니다.LiquidCrystal_I2C lcd(0x27, 16, 2);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자리이니 유의해 줍시다.
이제 이걸 업로드하면 아래와 같은 결과가 나옵니다.
다음 시간엔 챕터 3 으로 LCD 출력과 에 대한
강의를 이어나가도록 하겠습니다!
감사합니다.
전자부품 전문 쇼핑몰 인투피온입니다.
필요한 자재에 관한 문의는 홈페이지를 통한 견적 신청, 혹은 전화나 메일로 주시면 빠른 회신을 드릴 수 있도록 하겠습니다.
▶ 홈페이지: http://intopion.com/
▶ 전화: 02-2615-7278
▶ FAX : 02-6124-4242
▶ 메일: intopion@hanmail.net
'인투피온 강좌 > 아두이노 팁(Tip)' 카테고리의 다른 글
아두이노 매뉴얼 [미세먼지 측정 키트] - 1 (0) | 2022.08.18 |
---|---|
아두이노 매뉴얼 [화분 물공급 키트] - 3 (0) | 2022.08.03 |
아두이노 매뉴얼 [화분 물공급 키트] - 1 (0) | 2022.07.29 |
아두이노 매뉴얼 [소리감지 LED 키트] - 3 (0) | 2022.07.28 |
아두이노 매뉴얼 [소리감지 LED 키트] - 2 (0) | 2022.07.26 |