728x90
300x250

[임베디드(Embedded)] 아두이노 메가 2560, 우노 R3 - LCD 2004A + I2C 동작

 

이번에 소개할 것은 아두이노 메가 2560 - LCD 2004A + I2C 동작을 시키는 실습을 진행할 것이다.

크게 어려운 구성은 아니다.

 

아두이노 라이브러리의 예제 코드 찾기가 무척 힘들다. (Arduino Libraries has difficulted to Sample code.)
이론적으로는 동작이 쉽다. 그러나 코드 라이브러리 찾는데 많은 시간을 소요하다. 
(Arduino has easy to operation for text but it is spend to many time and find for libraries.

 


1. 아두이노 메가 2560 - LCD 2004A + I2C

 

아두이노 메가 2560을 활용하여 LCD 2004A + I2C를 구현하는 실습을 하겠다.

크게 어려운 건 아닌데, 라이브러리에서 찾는데 많은 시간을 소요할 것이다.

 

 

그림 1-1. 실제 구현, 도도(Dodo)

 

 

그림 1-2. 실제 구현, 도도(Dodo)

 


2. 회로 스케치 - 아두이노 2560 

 

 

다음은 회로 스케치이다. 아두이노 2560 메가를 기준으로 작성하였다.

 

 

그림 2-1. 스케치, 아두이노 메가 2560(Arduino Mega 2560) - 도도(Dodo)

 

 

영상 2-1. 회로스케치, 스케메틱(아두이노 메가 2560) - 도도(Dodo)

 

 

영상 2-2. 회로스케치 - PCB (라우팅) - 도도(Dodo)

 

참고로 알아두면 도움이 되는 것은 아두이노 우노나 아두이노 2560하고 큰 차이가 없긴 없다.

 

 

그림 2-2. 스키메틱, 아두이노 우노(Arduino Uno) - 도도(Dodo)

 

다음은 회로 스케치를 할 때 참고한 것이다.

스케치에 해당하는 부품이 없는 경우에는 종종 Fritzing 사이트에서 올라온다. 잘 찾아보면 도움이 될 것이다.

 

 

그림 2-3. LCD PowerTip - LCD 2004A(20x4) - 도도(Dodo)

 

http://fritzing.org/projects/lcd-powertip-pc2004c-20x4-con-arduino/fab/

 

이 사이트에 접속하면, LCD 2004A 부품을 얻어낼 수 있다. LCD 디스플레이를 부품으로 가져다 쓰려면 접속하면 도움이 많이 된다.

 

[첨부(Attachment)]

Arduino_Uno_i2C_LCD.zip

Arduino_Mega2560_i2c_LCD.zip

 

 

참고로 실제 LCD 2004를 직접 수작업으로 구현할 경우가 있다면, 이 글은 해당되지 않는다.

아두이노의 단점인데, I2C 변형부품을 사용하면 구현도 쉬워진다.

 


3. 아두이노 - 라이브러리

 

https://github.com/marcoschwartz/LiquidCrystal_I2C

 

이 사이트에 접속하면, LCD 2004A 화면 출력을 위한 라이브러리를 얻어낼 수 있다.

 

 

그림 3-1. 아두이노 라이브러리 - 프로젝트

 

아두이노 프로젝트 소스코드를 살짝 개조하면, C++ 처럼 사용가능하다고 주장한다.

이 프로젝트를 "Clone or download"를 눌러서 내려받는다.

 

 

그림 3-2. 라이브러리 파일 압축 해제 - 도도(Dodo)

 

그림 3-2의 모습처럼 압축이 풀어진다. LiquidCrystal_I2C-Master가 설치되었다면, 아두이노 프로그래밍을 하면 된다.

 


4. 코드(Code)

 

 

 

 #include <LiquidCrystal_I2C_AvrI2C.h>
 LiquidCrystal_I2C_AvrI2C lcd(0x27, 16, 2);

 

 // 접근주소: 0x27, 16, 2 (아두이노 Uno)

 // 접근주소: 0x3F or 0x27 (아두이노 Uno)
 

 void setup()
 {
       lcd.begin();
       lcd.backlight();
       lcd.setCursor(0, 0);
 }

 void loop(){
       lcd.clear();
       delay(1000);
       lcd.print("Hello, world!"); //
       lcd.setCursor(0, 1);
       lcd.print("mutlu aysu"); //
       delay(1000);
 }

 #include <Wire.h>                        // i2C 통신을 위한 라이브러리

 #include <LiquidCrystal_I2C.h>        // LCD 2004 I2C용 라이브러리


 LiquidCrystal_I2C lcd(0x3F,20,4);     // 아두이노 메가 2560


 void setup()
 {
      lcd.init();                      // LCD 초기화
      // Print a message to the LCD.

      lcd.backlight();                // 백라이트 켜기
      lcd.setCursor(0,0);             // 1번째, 1라인

      lcd.print("Hello, world!");
      lcd.setCursor(0,1);             // 1번째, 2라인
      lcd.print("Welcome");
      lcd.setCursor(2,3);             // 4번째, 3라인
      lcd.print("DoDo");

 }


 void loop()
 {
 } 

아두이노 우노

아두이노 메가 2560

 헤더 등이 구버전 프로젝트로 추정되는 소스코드이다.

 라이브러리 폴더를 참고하길 바란다.

 

 


5. 실제 구현

 

임베디드 프로그래밍의 장면이다. 크게 어렵게 진행되진 않는다.

 

 

 

 

 

 하드웨어 작업

 소프트웨어 작업

 (Actor): 하드웨어 작업도 보면서, 동시에 키보드를 타이핑하면서 디버깅을 한다.

 그림 5-1. 임베디드 프로그래밍 작성의 예, 도도(Dodo)

 

 

[첨부(Attachment)]

180811-design.7z

 

 


6. 참고자료(Reference)

 

1. Fritzing Project, Arduino I2C LCD Display, Last Modified , Accessed by 2018-08-11, http://fritzing.org/projects/arduino-i2c-lcd-display/fab/

2. Fritzing Project, lcd-powertip-pc2004c-20x4-con-arduino, Last Modified , Accessed by 2018-08-11, http://fritzing.org/projects/lcd-powertip-pc2004c-20x4-con-arduino/fab/

3. Marcoschwartz/LiquidCrystal_I2C, Last Modified , Accessed by 2018-08-11, https://github.com/marcoschwartz/LiquidCrystal_I2C

반응형

+ Recent posts