Skip to content
Home » 아두 이노 Lcd 출력 | [아두이노] 아두이노로 I2C Lcd 다양하게 제어하기 2479 투표 이 답변

아두 이노 Lcd 출력 | [아두이노] 아두이노로 I2C Lcd 다양하게 제어하기 2479 투표 이 답변

당신은 주제를 찾고 있습니까 “아두 이노 lcd 출력 – [아두이노] 아두이노로 I2C LCD 다양하게 제어하기“? 다음 카테고리의 웹사이트 https://kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://kk.taphoamini.com/wiki. 바로 아래에서 답을 찾을 수 있습니다. 작성자 코딩피플CodingPeople 이(가) 작성한 기사에는 조회수 21,590회 및 좋아요 145개 개의 좋아요가 있습니다.

Table of Contents

아두 이노 lcd 출력 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [아두이노] 아두이노로 I2C LCD 다양하게 제어하기 – 아두 이노 lcd 출력 주제에 대한 세부정보를 참조하세요

우리 생활 속에서 TV나 모니터 등 많은 전자제품에서 LCD를 찾아볼 수 있습니다.
아두이노로 I2C LCD(16 * 2)를 다양한 방법으로 제어해 보겠습니다.
+I2C 통신과 I2C LCD 사용 방법
+LCD 화면 원하는 위치에 문구 출력하기
+LCD 관련 내장 함수 알아보기
+초음파센서를 거리 측정 후 LCD에 출력하기
+버튼을 눌렀을 때 LCD 백라이트 켜고 끄기

코딩피플이 운영 중인 스마트스토어에서 재미있는 ‘아두이노 작품’ 키트 판매하고 있습니다.
▼▼▼ 아두이노 키트 보러가기 ▼▼▼
https://smartstore.naver.com/store4people/category/b59d9b3f99854f8f96f94707d00f5034
소스파일 다운 : https://blog.naver.com/codinglab_usdd/221973211973
#아두이노 #LCD #초음파센서 #LCDI2C #버튼 #아두이노작품 #아두이노활용 #아두이노강좌 #코딩 #임베디드

아두 이노 lcd 출력 주제에 대한 자세한 내용은 여기를 참조하세요.

[아두이노 기초] LCD 글자 출력하기

아두이노를 실행하고 스케치 탭 – 라이브러리 포함하기 – 라이브러리 관리를 들어갑니다. 2)-2 LCD 문자 출력 준비(라이브러리 …

+ 더 읽기

Source: infoinno.tistory.com

Date Published: 3/17/2022

View: 7047

I2C LCD로 문자 출력하기 – 코코아팹

아두이노 프로젝트 제작에 있어 가장 보편적으로 사용되는 LCD는 16*2 Character LCD로서 1줄에 16개의 문자씩 총 2줄에 문자를 표기할 수 있는 LCD …

+ 여기에 표시

Source: kocoafab.cc

Date Published: 1/1/2021

View: 86

[ 아두이노 ] I2C LCD로 문자 출력 + 한 칸 씩 옆으로 이동 + …

LCD(Liqu Crystal Display)는 액정표시장치로 스스로 발광하지 않기 때문에 후면에 백라이트가 있고, 전면에 있는 액정에 전기적 신호를 가해 빛을 통과 …

+ 자세한 내용은 여기를 클릭하십시오

Source: eteo.tistory.com

Date Published: 8/17/2021

View: 2097

아두이노 예제 15. LCD에 글자 쓰기(I2C LCD 모듈 사용) – 코딩런

lcd 예제이기 때문에 보통 객체 이름을 lcd로 선언하며, lcd.print(“Codingrun”);과 같이 사용하면 된다. 실습 내용. LCD에 원하는 문자를 출력해 보자.

+ 자세한 내용은 여기를 클릭하십시오

Source: codingrun.com

Date Published: 1/1/2021

View: 569

LCD 화면에 글자가 보이지 않아요. : 코딩교육키트 자주묻는질문

네모가 출력되었다면, 아두이노 보드에 연결된 전원(USB케이블 혹은 … 글자는 출력되지 않고, 네모만 LCD 화면으로 보인다면 ‘LCD 모듈의 주소값’ …

+ 여기에 보기

Source: bplab.kr

Date Published: 4/27/2021

View: 7989

[아두이노] I2C를 이용한 LCD 출력 ① – Benedicto – 티스토리

[아두이노] I2C를 이용한 LCD 출력 ①. museong 2020. 10. 10. 15:08. I2C를 이용하여 LCD에 출력을 하는데 1초마다 숫자가 오르게 출력해본다. ※ 명령어.

+ 여기에 표시

Source: bene-dictus.tistory.com

Date Published: 4/22/2022

View: 3845

[Arduino] 아두이노 LCD 16×2 다양한 예제 응용하기 – 코딩아트

LCD의 개요 위의 LCD(16×2)는 특이하게 아두이노 쉴드처럼 남땝처리가 … 컴파일을 모두 진행시키면 정상적으로 온도,습도,불쾌지수 값이 출력이 …

+ 더 읽기

Source: artsung410.tistory.com

Date Published: 4/18/2022

View: 3921

09-1 액정 디스플레이(LCD) 사용하기 – 아두이노 시뮬레이터

LCD에 문자와 숫자 출력하기. 아두이노에서 LCD를 사용하려면 먼저, 관련 라이브러리를 사용해야 합니다. 1602 LCD의 경우 내장된 LiquCrystal.h 라이브러리를 사용하면 …

+ 여기에 보기

Source: wikidocs.net

Date Published: 3/4/2021

View: 5563

[아두이노 강좌] 20. 16×2 LCD에 문자 출력하기 / 라이브러리 …

LCD란? LCD(Liqu Crystal Display, 액정 디스플레이)는 액체와 고체의 중간상태인 액정의 전기. 성질을 응용 …

+ 여기에 표시

Source: m.blog.naver.com

Date Published: 2/7/2022

View: 2898

주제와 관련된 이미지 아두 이노 lcd 출력

주제와 관련된 더 많은 사진을 참조하십시오 [아두이노] 아두이노로 I2C LCD 다양하게 제어하기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[아두이노] 아두이노로 I2C LCD 다양하게 제어하기
[아두이노] 아두이노로 I2C LCD 다양하게 제어하기

주제에 대한 기사 평가 아두 이노 lcd 출력

  • Author: 코딩피플CodingPeople
  • Views: 조회수 21,590회
  • Likes: 좋아요 145개
  • Date Published: 최초 공개: 2020. 5. 21.
  • Video Url link: https://www.youtube.com/watch?v=rHWgC55VhiQ

[아두이노 기초] LCD 글자 출력하기

목차

1) LCD 란?

2) LCD 문자 출력 준비(라이브러리 설치)

3) LCD로 문자 출력하기

4) LCD 주소가 잘못 입력되어있을 때

연결과정 영상을 보시면 LCD(I2C) 연결과정을 파악하는데 도움이 됩니다.

1) LCD 란?

문가와 기호를 표시할 수 있는 LCD로 보통은 16글자 2줄을 표시할 수 있는 LCD를 많이 사용합니다.

하지만 LCD는 치명적인 단점이 있습니다.

총 16개의 핀이 있다는 것 입니다.

이 16개의 핀이 모두 데이터 핀에 연결되지는 않지만, 상당히 많은 데이터 핀을 소모한다는 것이 단점입니다.

대충봐도 복잡하죠?

그래서 나온 것이 기존의 lcd를 바로 연결하는 것이 아닌 하나의 장치를 통해서 연결하는 방식입니다.

LCD용 12C 통신 모듈입니다

2)-1 LCD 문자 출력 준비(라이브러리 설치)

LCD를 이용하려면 특정 라이브러리를 추가해 주어야 합니다.

LCD와 여러 모듈을 이용하기 위해서는 “liquidcrystal I2C”라는 라이브러리가 필요하다, 그래서 특정 LCD에 맞는 라이브러리를 설치해 줄 필요가 있습니다.

아두이노를 실행하고 스케치 탭 – 라이브러리 포함하기 – 라이브러리 관리를 들어갑니다.

2)-2 LCD 문자 출력 준비(라이브러리 다운받아 설치)

[1] 파일을 다운받는다

LiquidCrystal_I2C-1.1.2.zip 0.02MB

[2] 다운받은 파일을 압축해제하여 저장한다

[3] 압축을 푼 파일을 아두이노 라이브러리에 저장한다 (위치 중요!!)

[C:\] -> [Program Files (x86)] -> [Arduino] -> [libraries]로 들어가서 저장합니다.

3) LCD로 문자 출력하기

GND : 빨간색

VCC (5V) : 검은색

SDA-데이터핀(A4) : 초록색

SCL-클럭핀(A5) : 노란색

#include #include LiquidCrystal_I2C lcd(0x27,20,4); //lcd(0x27,16열,2행) // 0x27 이 lcd의 고유주소라고 생각하면 됩니다. 보통 0x27이지만 다른 lcd도 있습니다. // 혹시 다른 고유주소라면, 예제프로그램에서 확인한후 똑같이 입력하여 코딩하시면 됩니다. // lcd(0x27,16열,2행) -> 고유주소=0x27 이고 총 16열 2행으로 구성되어 있다는 뜻 입니다. void setup() { lcd.init(); // LCD초기 설정 lcd.backlight(); // LCD초기 설정 lcd.setCursor(0,0); //처음 텍스트가 LCD에 나타날 위치 lcd.setCursor(열, 행) //밑에 사진을 통해 출력시작 위치를 확인할 수 있습니다. lcd.print(“Hello, world!”); lcd.setCursor(3,1); lcd.print(“How are you?”); } void loop() { }

4) LCD 주소가 잘못 입력되어있을 때

lcd가 연결되어있는 상태에서 밑에 코드를 입력한후 업로드합니다

그리고 시리얼 출력을 확인하면 LCD 주소를 알아낼 수 있습니다.

https://playground.arduino.cc/Main/I2cScanner/

// ————————————– // i2c_scanner // // Version 1 // This program (or code that looks like it) // can be found in many places. // For example on the Arduino.cc forum. // The original author is not know. // Version 2, Juni 2012, Using Arduino 1.0.1 // Adapted to be as simple as possible by Arduino.cc user Krodal // Version 3, Feb 26 2013 // V3 by louarnold // Version 4, March 3, 2013, Using Arduino 1.0.3 // by Arduino.cc user Krodal. // Changes by louarnold removed. // Scanning addresses changed from 0…127 to 1…119, // according to the i2c scanner by Nick Gammon // https://www.gammon.com.au/forum/?id=10896 // Version 5, March 28, 2013 // As version 4, but address scans now to 127. // A sensor seems to use address 120. // Version 6, November 27, 2015. // Added waiting for the Leonardo serial communication. // // // This sketch tests the standard 7-bit addresses // Devices with higher bit address might not be seen properly. // #include void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); // Leonardo: wait for serial monitor Serial.println(”

I2C Scanner”); } void loop() { byte error, address; int nDevices; Serial.println(“Scanning…”); nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the 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("Unknown error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found "); else Serial.println("done "); delay(5000); // wait 5 seconds for next scan } 참조: I2C LCD로 문자 출력하기 (kocoafab.cc) [Arduino] 아두이노 LCD 16x2 다양한 예제 응용하기 (tistory.com) , [Arduino] [아두이노 중급] 30. I2C LCD 디스플레이(여러 개 사용하기) : 네이버 블로그 (naver.com)

[ 아두이노 ] I2C LCD로 문자 출력 + 한 칸 씩 옆으로 이동 + 커스텀으로 한글 출력 + 타이머 출력

원리

LCD(Liquid Crystal Display)는 액정표시장치로 스스로 발광하지 않기 때문에 후면에 백라이트가 있고, 전면에 있는 액정에 전기적 신호를 가해 빛을 통과시키거나 차단하는 방식으로 문자를 표시한다. 다양한 규격이 있는데 보통 아두이노와는 16×2 character LCD 를 주로 사용하고 기존의 LCD는 핀이 너무 많아 사용에 불편함이 있었기 때문에 아래 사진과 같은 I2C모듈이 뒤에 납땜된 형태로 판매된다.

https://lastminuteengineers.com/i2c-lcd-arduino-tutorial/

1행에 16문자 x 2행, 총 32문자를 표현할 수 있다.

1문자는 5×8의 픽셀 그리드에 의해 표현된다.

Wiring I2C module on 16×2 LCD with SCL/SDA

혹시 작동이 안된다면

1. 왼쪽의 백라이트 점퍼가 잘 꼽혔는지 확인해보자. 저게 접지되어있어야 Backlight On이 된다.

2. 파란색 가변저항에 드라이버를 넣고 돌려서 문자의 선명도를 조절해본다.

준비

라이브러리 다운 받기

https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/

위 사이트에서 Liquidcrystal i2c 1.1.2 버전을 다운받을 수 있다.

아두이노 라이브러리 폴더 내에 zip파일 통째로 갖다 놓고 아두이노에서 스케치->라이브러리 포함하기->.ZIP 라이브러리 추가하기를 한다.

이후 헤더파일을 include해서 사용할 수 있다.

#include

회로

아두이노 우노 GND GND VCC 5V SDA A4 SCL A5

이렇게 전원이 공급되면 백라이트가 켜진다.

http://wiki.sunfounder.cc/index.php?title=I%C2%B2C_LCD1602

참고로 I2C (Inter Integrated Circuit) 통신은 두 개의 신호선(SDA, SCL)으로 여러 디바이스와 데이터를 송수신할 수 있는 저속통신 방식으로, 아두이노 우노에서는 SCL 핀은 A5, SDA 핀은 A4으로 정해져있다.

SCL(Serial Clock) : 일정 주기의 클락신호를 보냄

SDA(Serial Data): 클락신호에 따라 데이터를 보냄

코드

#include // including header LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x3F for a 16 chars and 2 line display // (주소값, 16×2 디스플레이) void setup() { lcd.init(); // lcd 객체 초기화 lcd.clear(); // 화면 지우고 커서를 왼쪽 상단 모서리로 옮김 lcd.backlight(); // Make sure backlight is on // 백라이트 on // Print a message on both lines of the LCD. lcd.setCursor(2,0); //Set cursor to character 2 on line 0 // 커서 옮김. 0행에 2열 lcd.print(“Hello world!”); // 문자 출력 lcd.setCursor(0,1); //Move cursor to character 2 on line 1 // 커서 옮김. 1행에 0열 lcd.print(“HA! HA! HA!”); } void loop() { }

잘나온다.

만약 안나온다면

I2C통신으로 부품을 연결하고자 할 때 슬레이브의 주소값을 알아야하는데 그게 LCD 제조사마다 다를 수 있다. 보통은 0X27이나 0X3F 의 값을 갖는다.

아래코드를 통해 시리얼모니터로 주소값을 확인하고

//Written by Nick Gammon #include void setup() { Serial.begin (9600); // Leonardo: wait for serial port to connect while (!Serial) { } Serial.println (); Serial.println (“I2C scanner. Scanning …”); byte count = 0; Wire.begin(); for (byte i = 8; 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 (")"); count++; delay (1); // maybe unneeded? } // end of good response } // end of for loop Serial.println ("Done."); Serial.print ("Found "); Serial.print (count, DEC); Serial.println (" device(s)."); } // end of setup void loop() {} 확인한 주소값을 위 Hello World 예제의 3번째 줄 첫번째 파라미터로 넣는다. 제공 함수들 .begin(); .setCursor(col,row); .backlight(); .noBacklight(); .print(val); - 문자(열) 출력 .write(val); - 아스키코드값에 해당하는 문자 출력 home() – positions the cursor in the top-left corner of the LCD without clearing the display. (화면 안지우고 커서를 왼쪽 상단 모서리로 옮김 – positions the cursor in the top-left corner of the LCD without clearing the display. (화면 안지우고 커서를 왼쪽 상단 모서리로 옮김 clear() - 화면지우고 커서를 왼쪽상단 모서리로 옮김 cursor() – displays the LCD cursor, an underscore (line) at the position of the next character to be printed. – displays the LCD cursor, an underscore (line) at the position of the next character to be printed. noCursor() – hides the LCD cursor. – hides the LCD cursor. blink() – creates a blinking block style LCD cursor: a blinking rectangle of 5×8 pixels at the position of the next character to be printed. – creates a blinking block style LCD cursor: a blinking rectangle of 5×8 pixels at the position of the next character to be printed. noBlink() – disables the blinking block style LCD cursor. – disables the blinking block style LCD cursor. display() – turns on the LCD screen and displays the characters that were previously printed on the display. – turns on the LCD screen and displays the characters that were previously printed on the display. noDisplay() – turns off the LCD screen. Simply turning off the LCD screen does not clear data from the LCD memory. This means that it will be shown again when the display() function is called. – turns off the LCD screen. Simply turning off the LCD screen does not clear data from the LCD memory. This means that it will be shown again when the display() function is called. scrollDisplayLeft() – scrolls the contents of the display one space to the left. If you want to scroll the text continuously, you need to use this function inside a loop. (문자 옆으로 흐르게 하기. 16자보다 큰 문자열을 표현할 수 있다) – scrolls the contents of the display one space to the left. If you want to scroll the text continuously, you need to use this function inside a loop. (문자 옆으로 흐르게 하기. 16자보다 큰 문자열을 표현할 수 있다) scrollDisplayRight() – scrolls the contents of the display one space to the right. – scrolls the contents of the display one space to the right. autoscroll() – turns on automatic scrolling of the LCD. If the current text direction is left-to-right (default), the display scrolls to the left, if the current direction is right-to-left, the display scrolls to the right. – turns on automatic scrolling of the LCD. If the current text direction is left-to-right (default), the display scrolls to the left, if the current direction is right-to-left, the display scrolls to the right. noAutoscroll() – turns off automatic scrolling. 시리얼통신으로 입력받은 문자를 lcd화면 .clear()하며 출력하기 #include LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x3F for a 16 chars and 2 line display void setup() { lcd.init(); lcd.clear(); lcd.backlight(); // Make sure backlight is on Serial.begin(9600); } void loop() { if (Serial.available()>0){ // 시리얼 버퍼에 데이터 수신이 있다면 lcd.clear(); while (Serial.available()>0){ // 버퍼가 비워질 때까지 char val = Serial.read(); // 입력받은 문자를 변수에 저장하고 lcd.print(val); // lcd에 출력 } } }

while문 바깥에 lcd.clear()가 없다면 커서가 문자출력후 다음칸에 위치하기 때문에 HelloWelcometomyblog 이런식으로 나오고 16자가 넘어가는 것은 짤릴 것이다.

millis()함수 이용. 타이머 lcd에 출력하기

#include // including header LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x3F for a 16 chars and 2 line display void setup() { lcd.init(); lcd.clear(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print(“Timer : “); } void loop() { lcd.setCursor(0, 1); lcd.print(millis()/1000); }

millis() 함수 : 보드가 프로그램을 돌리기 시작한 후 지난 밀리 초를 unsigned long 타입으로 반환. 50일 정도가 지나면 오버플로우가 난다.

직접 5×8 픽셀의 커스텀 캐릭터 만들기 + 왼쪽으로 한칸 씩 글자 이동하기

#include // including header LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x3F for a 16 chars and 2 line display // make some custom characters: byte heart[8] = { 0b00000, 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 }; byte h[8] = { 0b00000, 0b01110, 0b11111, 0b00100, 0b01110, 0b10001, 0b01110, 0b00000 }; byte a[8] = { 0b01000, 0b01000, 0b01000, 0b01110, 0b01110, 0b01000, 0b01000, 0b01000 }; byte t[8] = { 0b11111, 0b00000, 0b11111, 0b10000, 0b10000, 0b11111, 0b00000, 0b11111 }; void setup() { lcd.init(); lcd.clear(); lcd.backlight(); // create a new characters lcd.createChar(0, heart); lcd.createChar(1, h); lcd.createChar(2, a); lcd.createChar(3, t); lcd.setCursor(0, 0); lcd.print(“Custom Characters”); lcd.setCursor(0, 1); lcd.write(0); lcd.setCursor(1, 1); lcd.write(1); lcd.setCursor(2, 1); lcd.write(2); lcd.setCursor(3, 1); lcd.write(3); lcd.setCursor(5, 1); lcd.write(0); lcd.setCursor(6, 1); lcd.write(1); lcd.setCursor(7, 1); lcd.write(2); lcd.setCursor(8, 1); lcd.write(3); lcd.setCursor(10, 1); lcd.write(0); lcd.setCursor(11, 1); lcd.write(1); lcd.setCursor(12, 1); lcd.write(2); lcd.setCursor(13, 1); lcd.write(3); } void loop() { lcd.scrollDisplayLeft(); // 왼쪽으로 한칸씩 이동 delay(300); // 0.3초마다 }

원래 한글은 출력이 안되는데 직접 5×8픽셀의 ‘ㅎ’, ‘ㅏ’, ‘트’ 모양을 커스텀으로 만들어 줬다.

근데 5×8픽셀이라 한계가 있다. 정렬이 안맞기도 하고 아마 종성이 있는 문자는 안될 것 같다.

아래 사이트에서 커스텀으로 만들고자 하는 모양을 눈으로 확인한 후에 복붙하면 된다.

https://lastminuteengineers.com/i2c-lcd-arduino-tutorial/

아두이노 예제 15. LCD에 글자 쓰기(I2C LCD 모듈 사용)

LCD(액정표시장치, Liquid Crystal Dispaly)

아두이노 예제 12강에서 진행했던 LCD에 글자 쓰기는 실습을 해보기에는 좋은 예제이다. 하지만 디지털 포트를 많이 차지하기 때문에 여러가지 부품을 사용해야 한다거나 프로젝트를 진행할 시에는 효율적이지 못 하다. 그러므로 이번 시간에는 I2C LCD 모듈을 사용하여 글자를 써보도록 하겠다.

I2C LCD 모듈

기존 LCD에 모듈만 결합한 형태로 GND, VCC, SDA(Serial Data Line), SCL(Serial Clock) 등 총 4개의 핀으로 이루어져 있다. 총 12개의 배선을 단 4개의 배선으로 동작이 가능하기 때문에 여러 부품들을 함께 사용하기에 유용하다. 또한 I2C Converter에 가변 저항도 내장되어 있기 때문에 선명도 조절을 위한 가변 저항을 따로 달아줄 필요가 없다.

Arduino-LiquidCrystal-I2C-library-master.zip

http://codingrun.com/100

라이브러리 추가 방법은 위 링크를 참고하기 바란다.

사용 함수

함수를 사용하는 방법은 객체이름.함수();와 같이 사용한다. lcd 예제이기 때문에 보통 객체 이름을 lcd로 선언하며, lcd.print(“Codingrun”);과 같이 사용하면 된다.

실습 내용

LCD에 원하는 문자를 출력해 보자.

준비물

아두이노 보드, I2C LCD, 암수 점퍼선 4개

회로도

소스 코드

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include < LiquidCrystal_I2C.h > //LiquidCrystal 라이브러리 추가 LiquidCrystal_I2C lcd( 0x3F , 16 , 2 ); //lcd 객체 선언 void setup() { lcd. begin (); //LCD 사용 시작 } void loop() { lcd.setCursor( 5 , 0 ); // 커서를 5, 0에 가져다 놓아라. (열, 행) lcd.print( “Hi ^^” ); // 5, 0에 Hi ^^를 출력해라. delay( 1000 ); // 1초 대기 lcd.setCursor( 3 , 1 ); // 커서를 3, 1로 가져다 놓아라. (열, 행) lcd.print( “Codingrun” ); // Codingrun을 입력해라. delay( 1000 ); // 1초 대기 lcd.clear(); // 글자를 모두 지워라. delay( 1000 ); // 1초 대기 } Colored by Color Scripter cs

EX15_I2CLCD.ino

글씨 출력이 안 되는 경우 (해결 방법)

LCD 관련 실습을 하다 보면, 네모만 나온다던가, 글씨가 출력이 안 되던가 하는 오류가 종종 일어난다. 가장 흔한 이유 중 하나는 I2C LCD 부품의 주소값이 다르기 때문이다. 이럴땐 i2c_scanner를 통해 주소값을 알아낸 다음, 객체 선언에서 주소값을 바꿔주면 된다.

i2c_scanner를 통해 주소값을 알아내는 방법은 아두이노 공식홈페이지를 참고하면 된다.

https://playground.arduino.cc/Main/I2cScanner

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 46 47 48 49 50 #include < Wire.h > void setup() { Wire. begin (); Serial. begin ( 9600 ); while ( ! Serial); // Leonardo: wait for serial monitor Serial.println( ”

I2C Scanner” ); } void loop() { byte error, address; int nDevices; Serial.println( “Scanning…” ); nDevices = 0 ; for (address = 1 ; address < 127 ; address + + ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the 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( "Unknown error at address 0x" ); if (address < 16 ) Serial.print( "0" ); Serial.println(address,HEX); } } if (nDevices = = 0 ) Serial.println( "No I2C devices found " ); else Serial.println( "done " ); delay( 5000 ); // wait 5 seconds for next scan } Colored by Color Scripter cs EX15_I2CLCD.ino 위 코드를 실행 해보면, 시리얼모니터에 내가 가지고 있는 i2c lcd의 주소값을 알 수 있다. 현재 필자는 0X3F이므로 LiquidCrystal_I2C lcd(0x3F, 16, 2); 와 같이 입력하면 정상적으로 실행되는 것을 알 수 있다. 예를 들어 주소값이 0X27로 나온다면, LiquidCrystal_I2C lcd(0x27, 16, 2);과 같이 입력하면 된다.

[아두이노] I2C를 이용한 LCD 출력 ①

I2C를 이용하여 LCD에 출력을 하는데 1초마다 숫자가 오르게 출력해본다.

※ 명령어

LiquidCrytral_I2C(I2C 주소, 가로 글자수, 세로 글자수) : LCD 모듈이 연결된 I2C 주소와 LCD의 가로, 세로 글자수를 설정한다.

lcd.init( ) : LCD 모듈을 설정한다.

lcd.clear( ) : lcd란 이름의 LCD 모듈의 화면의 모든 표시를 지우고 커서를 왼쪽 위로 옮긴다.

lcd.home( ) : lcd란 이름의 LCD 모듈의 커서를 왼쪽 위로 옮긴다.

lcd.setCursor(열, 행) : lcd란 이름의 LCD 모듈의 커서를 원하는 위치로 이동시킨다.

lcd.print(데이터) : lcd란 이름의 LCD 모듈에 데이터를 출력한다.

lcd.noBacklight( ) : lcd란 이름의 LCD 모듈의 백라이트를 소등한다.

[Arduino] 아두이노 LCD 16×2 다양한 예제 응용하기

LCD의 개요

LCD의 앞면과 뒷면사진

위의 LCD(16×2)는 특이하게 아두이노 쉴드처럼 남땝처리가 되어있는데, 핀 구성이 기존의 LCD의 회로방식과는 다르게 되어있다. 이 방식은 I2C통신방식이다. SPI통신은 핀 연결만 10번을 진행하게 되는데, 기존 SPI통신과는 다르게 I2C LCD는 회로가 간결하게 구성되어있는게 특징이다.

LCD 라이브러리 설치

이 LCD를 이용하려면 특정 라이브러리를 추가해 주어야한다.

LCD와 여러모듈을 이용하기 위해서는 “liquidcrystal I2C”라는 라이브러리가 필요하다, 그래서 특정 LCD에 맞는 라이브러리를 설치해 줄 필요가 있다.

아두이노를 실행하고 스케치 탭 – 라이브러리 포함하기 – 라이브러리 관리 를 들어간다.

라이브러리 관리를 들어가게되면 라이브러리 매니저라는 창이 뜨게된다.

검색창에 liquidcrystal I2C를 입력한다.

라이브러리 추가를 끝내고 설치가 완료되면 버전 옆에 INSTALLED 라는 글씨가 뜨게된다.

설정이 다 끝나면 다시 아두이노 창으로 돌아와서 예제 – LiquidCrystal I2C – HelloWorld 를 들어간다.

예제실습 – LCD 작동확인

이제 모든준비가 끝났다.

#include #include LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); // LCD초기 설정 lcd.backlight(); // LCD초기 설정 lcd.setCursor(0,0); //텍스트가 LCD에 나타날 위치 lcd.print(“Hellow, world!”); lcd.setCursor(3,1); lcd.print(“How are you?”); }

추가하면 이런식으로 Wire.h와 LiquidCrystal_I2C.h 라는 라이브러리가 추가된것을 확인할 수 있다.

위 코드는 조금 변경시켰는데, 3번째 줄을 (0X27, 16, 2) 로 수정을 했고, 아래 예제의 텍스트를 조금 수정했다.

16×2 lcd는 위사진과 같이 총 두줄로 구성이 되어있고, setCursor는 이 LCD에 텍스트가 나오게 되는 좌표라고 생각하면 편하다. 예를들어서 setCursor(3,1)이라고 하면 두번째 행, 3번째열에 위치하게된다.

Sensor Arduino UNO GND(검정색) GND VCC(빨간색) 5V SDA(노란색) A4 SCL(초록색) A5

회로구성은 위와같다. 오른쪽 사진에서 표시된 핀들이 정확하고, 회로를 편집하는 과정에서 위 회로의 순서와는 조금 차이가 있다는점을 주의해야한다. 포트 구성은 위의 표와 같다.

코드를 입력하고 컴파일 까지 모두 다 끝내게 되면 위 사진과 같이 텍스트가 뜨는것을 확인할 수 있다.

예제실습 – LCD에 움직이는 텍스트 넣기

아까 기본예제를 이용해서 이번에는 움직이는 텍스트를 만들어 낼 수도있다.

#include #include LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print(“Hellow, world!”); } void loop() { for (int position = 0; position < 16; position++) { lcd.scrollDisplayLeft(); delay(150); } for (int position = 0; position < 35; position++) { lcd.scrollDisplayLeft(); delay(150); } } 위의 예제를 살짝 변형시켰는데, 차이점이 있다면 void loop안의 내용추가이다. 여기서 for문을 이용해서 정수가 늘어날때마다 텍스트가 한번씩 움직이는 scrollDisplay 함수를 이용해보았다. 좌로 1열씩 움직일때는 scrollDisplayLeft(), 우로 1열씩 움직일때는 scrollDisplayRight()를 쓰면된다. 위의 예제를 컴파일 하게되면 위와같이 움직이는 LCD를 만들어 낼 수있다. 이제 다음 여러가지 예제를 통해서 LCD를 응용해볼 수 있다. 가변저항(Potentiometer) 을 이용해서 LED의 색상을 LCD에 표현해보기 Sensor Arduino UNO GND(공통 - 검정색(회색)) GND VCC(가변저항 - 빨간색) Vin SDA(LCD - 노란색) A4 SCL (LCD - 초록색) A5 VCC(가변저항 - 갈색) 5V A0(가변저항 - 갈색) A0 LED(blue) D2 LED(green) D3 LED(red) D4 #include #include LiquidCrystal_I2C lcd(0x27,16,2); int val=0; void setup() { lcd.init(); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); lcd.backlight(); } void loop() { val = analogRead(A0); if (val <= 250) { digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW);; lcd.setCursor(5,0); lcd.print("Color"); lcd.setCursor(5,1); lcd.print("“); } else if(val > 250 && val <= 500){ digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, LOW); lcd.setCursor(5,0); lcd.print("Color"); lcd.setCursor(5,1); lcd.print("“); } else{ digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, HIGH); lcd.setCursor(5,0); lcd.print(“Color”); lcd.setCursor(5,1); lcd.print(““); } }

회로구성은 위와같다. 가변저항값에 따라서 전구의 색이 변하는 조건문을 이용해서 LCD에 나타낸다.

위와같이 가변저항기를 돌리게되면 LCD의 텍스트가 바뀌는것을 확인할 수 있다.

온도센서(LM35) 를 이용해서 현재온도를 LCD에 표현해보기

Sensor Arduino UNO GND (공통 – 검정색) GND VCC(LCD – 빨간색) Vin SDA(LCD – 노란색) A4 SCL (LCD – 초록색) A5 VCC(온도센서 – 빨간색) 5V A0(온도센서 – 주황색) A0

회로구성은 위와같다, 주의해야 할점이 있는데 온도센서는 과부하가 걸리게 되면 온도가 급격하게 올라가기 때문에 오른쪽 사진과 같이 극성을 잘 확인해줄 필요가있다. 그 기준점을 잡는방법은 온도센서에 넙적한부분이 있는데 그부분을 앞으로 방향을 잡았을때 왼쪽이 5V 오른쪽이 GND, 가운데가 Output이 된다.

#include #include float temp; // 실수형 타입의 변수 설정 LiquidCrystal_I2C lcd(0x27,16,2); void setup() { Serial.begin(9600); } void loop() { lcd.init(); int val = analogRead(A0); // 온도센서의 output에서 들어온 신호를 받아줄 변수지정 temp = val*0.48828125; // 화씨->섭씨로 변환한 값을 변수로 지정 lcd.backlight(); lcd.setCursor(3,0); lcd.print(“Temperature”); lcd.setCursor(6,1); lcd.print(temp, 1); lcd.setCursor(12,1); lcd.print(“C”); delay(1000); }

위의 사진처럼 손을 갖다 대면 온도가 올라가는게 LCD에 표시가 된다.

온습도센서(DHT11)를 이용해서 온도,습도,불쾌지수를 LCD에 표현해보기

실생활에서 우리가 온도센서(LM35)를 사용하기도 하지만, 더 다양한 기능이 들어있는 온습도 센서(DHT11)를 더 선호하는 편이다. 이 온습도 센서를 이용하면 습도를 측정해서 습도에 따라 작동하는 제습기를 만들 수 있고, 창문에 래크,피니언,서브모터를 이용해서 비내릴대 창문을 열고 닫는기능을 설정할 수 있다.

DHT11 온습도센서는 총 4개의 핀으로 구성되어있다. 이런 타입의 센서가 있는반면에 모듈형으로 되어있는 온습도센서가 있는데, 모듈형은 3개의 핀으로 구성되어있다. 이번시간에는 4개의핀으로 구성된 기본형 온습도센서를 사용해볼것이다. 핀이 4개지만 사용하는 핀은3가지다. 아래 표에 맞게 회로를 연결시켜주도록 한다.

Sensor Arduino UNO GND (공통 – 검정색) GND VCC(LCD – 빨간색) Vin SDA(LCD – 노란색) A4 SCL (LCD – 초록색) A5 VCC(온습도센서1번핀 – 빨간색) 5V DATA(온습도센서 2번핀 – 주황색) D2

#include #include #include LiquidCrystal_I2C lcd(0x27,16,2); // for DHT11, // VCC: 5V or 3V // GND: GND // DATA: 2 int pinDHT11 = 2; SimpleDHT11 dht11; void setup() { Serial.begin(9600); } void loop() { lcd.init(); byte temperature = 0; byte humidity = 0; int err = SimpleDHTErrSuccess; if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) { Serial.print(“Read DHT11 failed, err=”); lcd.setCursor(0,0); lcd.print(err); delay(1000); return; } int tem = (int)temperature; int hum = (int)humidity; int index = 1.8*tem – 0.55*(1-hum / 100)*(1.8*tem – 26) + 32; lcd.backlight(); lcd.setCursor(0,0); lcd.print(“TEM : “); lcd.print((int)temperature); lcd.print(“`C, “); lcd.print((int)humidity); lcd.print(“H”); lcd.setCursor(0,1); lcd.print(“DI : “); lcd.print(index); }

코드는 위와같다. 온습도센서를 사용하기위해서는 simpleDHT라는 라이브러리를 설치해야된다. 필자는 simpleDHT라이브러리 안에있는 예제를 활용해보았다. 온습도센서 라이브러리에 관한 설명은 아래링크를 통해 확인가능하다.

그리고 위 코드에는 온도값을 나타낼 정수형변수 tem을 설정해주었고, 습도값을 나타내는 hum변수를 설정해 두었다. 이 변수는 불쾌지수를 구할때 중요한 변수이므로 초기에 정의를 잘 해둘필요가있다.

불쾌지수는 index라는 변수를 통해서 값을 읽어들일것이다. 위 코드대로 진행을 시키게되면 LCD첫줄엔는 온도값과 습도값이 나올것이고, 두번째줄에는 불쾌지수가 나올것이다.

컴파일을 모두 진행시키면 정상적으로 온도,습도,불쾌지수 값이 출력이 되는것을 확인 할 수 있다.

DS 1302 RTC모듈을 이용해서 LCD 전자시계 만들기

이번에는 DS1302 RTC모듈을 이용해서 전자시계를 만들어보는 시간을 가져볼것이다.

RTC모듈은 실시간으로 시간을 출력하는 장치이다. RealTimeClock을 줄여서 흔히 RTC라고 부르는데, 이 장치는 각종 전자기기의 시간이나 타이머기능이 있는 모든제품에 사용된다.

Sensor Arduino UNO GND (공통 – 검정색) GND VCC(LCD – 빨간색) Vin SDA(LCD – 노란색) A4 SCL (LCD – 초록색) A5 VCC(RTC – 빨간색) 5V RST(RTC – 노란색) D8 DAT(RTC – 노란색) D7 CLK(RTC – 노란색) D6

#include #include #include virtuabotixRTC myRTC(6, 7, 8); LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { Serial.begin(9600); lcd.init(); lcd.backlight(); myRTC.setDS1302Time(00, 48, 8, 7, 25, 7, 2020); } void loop() { myRTC.updateTime(); lcd.setCursor(1,0); lcd.print(myRTC.year); lcd.print(“/”); lcd.print(myRTC.month); lcd.print(“/”); lcd.print(myRTC.dayofmonth); lcd.print(“/”); switch (myRTC.dayofweek) { case 1: lcd.print(“Sun”); break; case 2: Serial.print(“MON”); break; case 3: lcd.print(“TUE”); break; case 4: lcd.print(“WED”); break; case 5: lcd.print(“THU”); break; case 6: lcd.print(“FRI”); break; case 7: lcd.print(“SAT”); break; } lcd.setCursor(5,1); lcd.print(myRTC.hours); lcd.print(“:”); lcd.print(myRTC.minutes); lcd.print(“:”); lcd.print(myRTC.seconds); delay(1000); lcd.clear(); }

RTC모듈을 사용하기위해서, virtuabotixRTC라이브러리를 사용해보았다. 이 라이브러리는 구글링을통해서 다운이 가능하며 필자가 올려놓은글에 설명과 자료가 나와있으니 아래 링크를 통해서 라이브러리를 다운 받아주도록하자.

컴파일을 진행시키면 첫번째줄에 년,월,날짜,요일이 출력되는것을 확인 할 수 있고, 두번째줄에는 시간이 표시되는것을 확인 할 수 있다.

초음파 센서(HC-SR04) 를 이용해서 거리값을 LCD에 표현해보기

Sensor Arduino UNO GND (공통 – 검정색) GND VCC(LCD – 빨간색) Vin SDA(LCD – 노란색) A4 SCL (LCD – 초록색) A5 VCC(초음파센서 – 빨간색) 5V Trig( 초음파센서 – 보라색) D12 Echo( 초음파센서 – 회색) D11

#include #include #include #define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); LiquidCrystal_I2C lcd(0x27,16,2); void setup() { Serial.begin(9600); lcd.init(); lcd.backlight(); } void loop() { lcd.setCursor(4,0); lcd.print(“Distance”); lcd.setCursor(5,1); lcd.print(sonar.ping_cm()); lcd.setCursor(8,1); lcd.print(“cm”); delay(300); lcd.clear(); }

초음파 센서는 아까 LCD라이브러리 추가했을때와 비슷하게 이것또한 라이브러리를 추가해 주어야된다.

라이브러리 관리창에 NewPing을 입력해서 설치해주도록한다. 그리고 NewPingExamle예제를 실행시키면 위의 코드와 같이 Newping.h 라이브러리가 포함되는것을 확인할 수있다. 다음에는 LiquidCrystal_I2C를 추가해주고 위와같은 코드를 작성하면 된다.

컴파일을 모두 진행하면 위와같이 손을 초음파센서에 갖다대면 값이 줄어들면서 변하는것을 확인할 수있다.

초음파에 대한 설명은 아래 링크를 참조하도록 한다.

반응형

09-1 액정 디스플레이(LCD) 사용하기

LCD(Liquid Crystal Display) 소개

LCD는 액정 디스플레이 또는 액정 표시장치를 의미하며 뒷면에 빛을 내는 백라이트(backlight)를 배치하고 앞면에 액정을 두어 전기신호에 따라 빛을 차단하거나 통과시키는 방식으로 문자나 숫자 등을 표시하는 장치입니다. 아두이노 시뮬레이터에서 제공하는 LCD를 1602 LCD라고도 하는데, 가로로 16개의 문자를 출력할 수 있고 세로로 2줄을 표현할 수 있는 LCD라는 의미입니다.

LCD에 문자와 숫자 출력하기

아두이노에서 LCD를 사용하려면 먼저, 관련 라이브러리를 사용해야 합니다. 1602 LCD의 경우 내장된 LiquidCrystal.h 라이브러리를 사용하면 됩니다. LCD를 통해 문자와 숫자를 출력하는 방법에 대해 살펴보겠습니다. LCD에 문자와 숫자를 출력하기 위해 LCD 구성요소와 가변저항, 저항이 필요합니다. 가변저항은 LCD의 V0 단자에 연결해 문자를 표시하는 영역의 밝기를 제어하며, 저항은 백라이트를 사용해 LCD에 표시되는 문자를 선명하게 볼 수 있도록 도와줍니다.

LCD 구성요소는 기본 구성요소에 포함되지 않기 때문에 검색 기능을 통해 작업판에 배치해야 합니다. 구성요소 선택메뉴 아래 검색창에 “lcd”라는 키워드로 검색 후 드래그 앤 드롭을 통해 LCD 구성요소를 작업판에 이동하겠습니다.

LCD에 문자와 숫자 출력하기의 회로구성

위 그림과 같이 LCD의 단자를 아두이노와 브레드보드에 연결합니다. LCD는 총 16개의 단자로 구성됩니다. LCD의 단자를 각각 살펴보면 VCC는 전원(5V)을 GND는 그라운드를 의미합니다. V0는 가변저항의 출력 값을 통해 LCD에 표시되는 문자의 밝기를 제어하는데 사용되며, RS(Resistor Select)는 데이터 또는 명령어를 선택할 수 있는 스위치가 됩니다. 예를 들어, RS단자에 LOW 값을 쓰면 데이터를 전송하는 통로인 데이터 버스를 통해 명령어를 전송하며, HIGH 값을 쓰면 데이터 버스로 데이터를 전송할 수 있습니다. RW(Read/Write) 단자는 LCD의 값을 읽을지 쓸지를 결정합니다. LOW 값으로 설정하면 LCD에 값을 써 문자를 출력할 수 있습니다. 항상 출력모드로 사용할 경우 그라운드에 연결하면 됩니다. E(Enable) 단자는 명령어를 실행하기 위한 시점을 결정합니다. 예를 들어, E단자의 값이 LOW에서 HIGH로 변경되는 시점에 LCD를 초기화하거나 문자의 출력 위치를 결정하는 커서(Cursor)를 변경하는 등 스케치 코드로 작성한 명령어가 LCD로 전송된 후 실행되는 시점을 결정합니다.

DB0부터 DB7은 데이터 또는 명령어를 전송하는 단자로 8개의 단자 전체를 사용할 수 있으며 DB0에서 DB3까지는 생략하고 DB4부터 DB7까지 4개의 단자만 사용할 수 있습니다. LCD의 데이터 단자를 모두 사용할 경우 아두이노의 디지털 핀이 부족할 수 있으므로 보통 4개의 단자만 사용합니다. 마지막 LED(A)와 LED(K)는 백라이트를 사용하기 위한 단자로 백라이트가 LED로 동작하기 때문에 애노드(Anode)와 캐소드(Cathode) 두 단자가 필요합니다. LCD 모듈에 따라서 애노드는 알파벳 A, 캐소드는 알파벳 K만으로 표시되는 것도 있으니 주의해서 사용합니다.

LCD에 문자와 숫자 출력하기의 스케치 코드

LCD에 문자와 숫자를 출력하는 스케치 코드는 위와과 같습니다. 1번째 줄의 라이브러리를 추가하는 방법은 직접 타이핑하는 방법과 아래와 같이 시뮬레이터의 코드 입력 창에서 “LiquidCrystal.h” 라이브러리를 포함(Include)하는 방법이 있습니다.

스케치 코드의 4번째 줄은 LCD를 초기화하는 코드입니다. 각 핀번호가 의미하는 바는 아래 표와 같습니다. 아두이노에 연결된 LCD 단자를 각각 1:1로 매핑해 초기화 함수를 선언해야 LCD가 정상적으로 동작합니다. RS(Resistor Select)는 데이터와 명령어를 선택할 수 있는 단자이며, E(Enable)은 명령어를 실행하는 시점을 결정하는 단자, DB4 ~ DB7은 데이터를 전송하기 위한 단자를 아두이노 디지털 핀 12, 11, 5, 4, 3, 2에 각각 연결합니다. 만약 해당하는 아두이노 디지털 핀이 다른 목적으로 사용하고 있다면 사용하지 않는 아두이노의 핀 번호에 LCD 단자를 연결하고 스케치 코드에 핀 번호를 동일하게 일치시켜주면 됩니다.

스케치 코드 7번째 줄에서는 begin() 함수를 통해 어떤 LCD를 초기화할지 결정합니다. 매개변수는 열(Columns)과 행(Rows)으로 구성되며 1602 LCD는 16개의 열과 2개의 행을 의미하기 때문에 lcd.begin(16, 2)와 같이 초기화 합니다. begin() 함수 앞에 lcd는 스케치 코드 4번째 줄에서 선언한 LCD의 변수 명이며 LCD와 관련한 함수는 항상 LCD를 초기화한 변수명을 접두어로 사용해야 합니다. 따라서 8번째 줄에 문자를 출력하는 print() 함수도 lcd.print()와 같이 사용되었습니다. LCD의 변수명으로 사용된 lcd를 변경하려면 4번째 줄에서 LCD를 초기화할 때 다른 이름으로 바꾸고, 그 뒤에 사용되는 LCD와 관련된 함수 앞에 접두어를 변경된 이름으로 모두 바꾸면 됩니다. 커서(Cursor)는 문자의 출력 위치이며 초기값은 0번째 열과 0번째 행을 의미합니다. 따라서 print() 함수로 “Hello, Arduino!!”라는 문자열을 출력할 때 LCD의 첫 번째 줄 왼쪽부터 출력됩니다. 프로그램에서 첫 번째 위치는 1이 아닌 0부터 시작함을 주의합니다. 예를 들어, 16개의 열을 표현할 수 있는 LCD는 0번째 열부터 15번째 열까지 출력할 수 있습니다. 12번째 줄에서 사용한 setCursor() 함수는 커서의 위치를 임의로 변경해 출력할 문자의 시작위치를 조절할 수 있습니다. 매개변수는 begin() 함수와 동일하게 열과 행으로 구성되며 setCursor(0, 1)은 0번째 열과 1번째 행을 의미합니다. 즉, 두번째 줄 왼쪽으로 커서를 이동시킨 후 스케치 코드 13번째 줄의 print() 함수를 통해 숫자 “1234567890”을 출력하면 아래와 같이 출력되는 것을 확인할 수 있습니다.

[아두이노 강좌] 20. 16×2 LCD에 문자 출력하기 / 라이브러리 사용하기 (1)

개요

이번글에서는 이미 만들어져있는 소스코드(라이브러리)를 통해 LCD라는 전자부품을

사용해보도록 하겠습니다. 이 과정을 통해 LCD가 무엇인지, 그리고 라이브러리란

무엇인지 알아봅시다.

소프트웨어 교육키트 보러가기 (클릭)

LCD란?

LCD(Liquid Crystal Display, 액정 디스플레이)는 액체와 고체의 중간상태인 액정의 전기

성질을 응용하여 시각적인 효과를 주는 전자제품입니다. (액정은 전압이 가해지면 배열이

변하고, 이러한 결정의 움직임에 따라 빛의 투과율이 변하게 됩니다.) 저전압, 저전력으로

작동한다는 장점이 있으며, 본 예제에서 사용되는 LCD는 간단한 텍스트를 출력할 수

있는 16×2 사이즈의 캐릭터 LCD입니다.

16×2 캐릭터 LCD는 한 화면에 가로 16, 세로2의 총 32개의 캐릭터 문자를 표시할 수 있는

디스플레이입니다. 총 16개의 핀으로 구성되어 있으며, 아두이노의 5V로 작동 시킬 수

있습니다. 출력 문자는 프로그래밍 과정을 통해 조작이 가능합니다.

라이브러리란?

아두이노 라이브러리란 쉽게 말해 이미 만들어져 있는 샘플 소스 코드를 의미합니다.

본 예제에서 사용할 16×2 LCD 모듈은 디지털 방식의 독자적인 통신을 사용하기 때문에

사용하기 위해서는 복잡한 프로그램(소스코드)를 만들어야 하지만 이미 만들어 놓은

라이브러리를 통해 간단한 수정만으로 LCD모듈을 제어할 수 있습니다.

라이브러리는 스케치 파일(.ino확장자)로만 구성되는 경우도 있지만, 헤더파일(.h확장자)과

C소스코드파일(.CPP확장자)이 포함되는 경우가 있습니다. 이럴 경우엔 각 파일을 지정된

폴더에 위치시켜야 라이브러리 사용이 가능합니다. (이에 대해서는 강좌22에서 배움.. ^^)

그럼 이제 본격적으로 LCD에 문자를 출력해보도록 합시다!

16×2 LCD에 문자 출력하기

프로그램 코드 (9)

#include // LiquidCrystal.h 라이브러리를 포함한다.

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // LCD가 연결된 핀을 설정한다.

void setup() {

lcd.begin(16, 2); // LCD의 크기를 설정한다.

lcd.print(“hello, world!”); // LCD에 출력할 내용을 설정한다.

}

void loop() {

lcd.noDisplay(); // 화면을 끈다.

delay(500); // 0.5초 지연

lcd.display(); // 화면을 킨다

delay(500); // 0.5초 지연

}

프로그램 해석

#include를 통해 LiquidCrystal.h 라이브러리를 불러와 사용한 내용입니다. 아두이노 통합

개발환경은 설치 할때 기본 라이브러리를 제공하고있습니다. 본문에서 사용된 코드는

통합개발환경 – 파일 – 예제 – Liquid Crystal – Display를 실행하면 불러올 수 있습니다.

헤더파일 또한 이미 지정된 폴더위치에 있기 때문에 따로 옴길 필요없이 예제에서 코드를

불러오는 것만 으로 프로그램을 간단하게 사용할 수 있습니다.

관련 함수 정리

lcd.begin()을 포함해 본문에서 사용된 lcd관련 코드들은 기본 내장 함수가 아닌 헤더파일

(.h확장자) 혹은 C코드파일 (.cpp확장자)에 의해 추가된 코드들이므로 라이브러리가 추가

되어있지 않으면 사용할 수 없습니다.

■LiquidCrystal lcd(핀1, 핀2, 핀3, 핀4, 핀5, 핀6)

LCD 사용을 선언하고, 제어(통신)할 핀을 설정하기 위한 함수입니다.

매개변수

핀번호 – LCD와 통신(연결)할 핀을 설정합니다.

■lcd.begin(가로,세로)

LCD사용의 시작을 알리고, 사용할 LCD의 크기를 설정하는 함수입니다.

매개변수

가로 – LCD의 가로 크기를 설정합니다. (예: 16×2 LCD라면 16)

세로 – LCD의 세로 크기를 설정합니다. (예: 16×2 LCD라면 2)

■lcd.print(문자열)

LCD에 출력할 문자를 설정하는 함수입니다.

매개변수

문자열 – LCD화면에 출력할 문자를 입력합니다.

■lcd.setCursor(가로,세로)

LCD에 출력될 문자의 출력 위치를 설정하기 위한 함수입니다.

매개변수

가로 – 가로 좌표를 설정합니다.

세로 – 세로 좌표를 설정합니다.

■lcd.clear()

LCD에 출력된 문자를 모두 지웁니다.

키워드에 대한 정보 아두 이노 lcd 출력

다음은 Bing에서 아두 이노 lcd 출력 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [아두이노] 아두이노로 I2C LCD 다양하게 제어하기

  • 코딩
  • 아두이노
  • LCD
  • I2C
  • 초음파센서
  • 버튼
  • 아두이노강좌
  • 아두이노작품
  • 아두이노활용
  • 임베디드
[아두이노] #아두이노로 #I2C #LCD #다양하게 #제어하기


YouTube에서 아두 이노 lcd 출력 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [아두이노] 아두이노로 I2C LCD 다양하게 제어하기 | 아두 이노 lcd 출력, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  엘리베이터 안전 장치 | 엘리베이터 안전장치의 원리 23895 좋은 평가 이 답변

Leave a Reply

Your email address will not be published. Required fields are marked *