아두이노 실습 8주차 (디스플레이 활용하기)

2023. 11. 1. 20:02아두이노 (Arduino)

실습 8주차 (디스플레이 활용하기)

 

이번주 실습에서는 2가지 디스플레이(FND, LCD)를 활용하여 원하는 숫자와 글자를 출력해 볼려고 한다.

 

 

FND(Fiexible Numeerical Display)

 

먼저 사용해볼 디스플레이는 FND이다.

 

 

FND에 보이는 점(dot)을 제외하고 7개의 LED로 숫자를 표시하기 때문에 7-세그먼트라고도 한다. 그림처럼 FND의 모양과 방식, 크기 등의 차이가 있다.

FND그림와 같이 세그먼트라고 불리는 8개의 LED가 그라운드에 공통으로 연결된 Common Cathode 형과 전원에 공통으로 연결된 Common Anode 형으로 두 가지 방식이 있다.

이것은 외형으로 구분할 수 없으므로 어떤 방식인지 데이터시트를 확인해야 한다.

 

공통 캐소드 형과 공통 애노드 형의 세그먼트 회로

 

공통 애노드의 경우 각 세그먼트는 LOW(0 V) 신호에 세그먼트 LED가 켜진다.

 

공통 캐소드의 경우 반대로 그라운드에 세그먼트들이 연결되어 있으므로 각 세그먼트는 HIGH(5 V) 신호에 켜진다.

 

 

공통 애노드 형의 코드 값과 아두이노 보드와 FND 세그먼트 연결 방법

 

 

위 표는 공통 애노드 형의 코드 값과 아두이노 보드와 FND 세그먼트 연결 방법을 나타낸 것이다.

 

3을 표시하고 싶다면 아두이노 보드의 2, 3, 4, 5, 8 번 핀을 LOW로 설정해주면 된다.

 

 

아두이노를 FND와 연결하여 숫자 3을 출력하여 보자.

 

회로는 아래와 같이 연결한다.

 

 

위의 아두이노 보드와 FND 세그먼트 연결 방법을 나타낸 표를 참고하여 각각의 세그먼트들을 아두이노 핀과 연결하였다.

 

그리고 a, b, c, d, g 변수에 LOW 신호를 주고 나머지 변수에는 HIGH 신호를 주었다.

 

 

위와 같이 숫자 3이 정상적으로 표시된다.

 


 

 

그런데 숫자가 3만 표시되면 아쉬우니 0부터 9까지 숫자 카운터를 표시하는 실습을 해보자.

 

 

회로는 위에서 진행했던 실습 그대로 유지한 채 코드만 바꿔주면 된다.

 

 

변경된 코드에 Fnd_seg 라는 2차원 배열이 추가되었는데 이는 1부터 9까지의 숫자를 표시하기 위해 어떤 세그먼트를 켤 것인지에 대한 값을 저장하고 있다.

 

Fnd_Write함수에선 정수 매개변수 row를 받아 디스플레이에 특정 숫자를 표시하는 역할을 한다. Fnd_seg 배열의 열을 반복하며 해당하는 숫자를 표시한다.

 

마지막으로 loop함수에서 0부터 9까지 반복하며 count값으로 FndWrite()함수를 호출한다.

 

 

위 실습영상처럼 1부터 9까지 잘 표시되는 것을 볼 수 있을 것이다.

 

 


 

 

LCD(Liquid Crystal Display)

LCDLiquid Crystal Display의 약자로 액정 표시 장치를 말한다. LCD는 얇고 가벼우며 소비 전력이 적은 장점은 있지만, 시야각이 제한적이고 어두운 곳에서는 선명함이 떨어지는 단점이 있다.
LCD
를 이용해 숫자 및 문자를 출력할 수 있기 때문에 손목 시계부터 TV에 이르기까지 광범위하게 사용되고 있다.

 

 

 

 

이번 실습에서 사용할 LCD는 16 x 2 문자형 LCD이다.

 

다음과 같이 아두이노와 LCD를 연결하자.

 

가운데에 연결되어 있는 것은 가변저항이다.

 

가변저항이 없어도 LCD에 표시는 되지만 LCD의 네모칸(?)이 너무 강하게 표시되서 글자가 보이지 않을 수도 있으니 가변저항을 연결하여 글자가 잘 표시되도록 조절하는 것을 추천한다.

 

 

LiquidCrystal lcd는 C-LCD 모듈의 RS, E, DB4, DB5, DB6, DB7 핀에 연결된 아두이노 보드의 핀 번호를 초기화 한 것이다.

 

 

LiquidCrystal 라이브러리

 

begin()

LCD 인터페이스를 초기화하고 LCD에 표시할 수 있는 문자의 개수와 줄 수(폭 및 높이)를 지정한다.(다른 라이브러리 명령을 지정하기 전에 호출해야 한다.)

 

print()

LCD에 문장을 표시한다.

 

 

 

실행해보면 위와 같이 print에 넣은 글자가 깜빡이며 표시되는 것을 볼 수 있다.

(영상에선 Induk University가 표시되는데 코드를 수정하여 그런 것이니 오류가 아니다.)

 

 

 

위 영상에선 가변저항을 조절하여 불빛의 세기를 조절해보았다.