아두이노2016. 8. 3. 14:35

예전 글 "[아두이노] 0.96인치 OLED LCD 모듈의 사용 (Adafruit SSD1306 호환)" 에서 이 디스플레이 모듈에 대해서 Adafruit 의 조금은 긴 예제를 실행해 보았다. 이 모듈은 간단한 애니메이션, 그림도 표현이 가능하나 나 같은 경우 딱히 그런 용도로 쓸 것 같지는 않다. 거의 텍스트 표시 용도로 사용될 것인데 예전 글에서 실행했던 예제는 너무 길고 좀 정신이 없었다. 그래서 그 예제 소스 중에서 텍스트 표시 하는 부분만 간추리고 소스에 주석을 달아서 사용법을 정리해 보려고 한다.


연결방법과 라이브러리 설치는 예전 글에서와 같다. 그래도 살짝 다시 정리를 해 보면...


모듈은 위와 같이 생겼다. 100원짜리 정도의 크기이며 모노크롬 화면으로서 128x64 의 해상도를 가진다. 7개의 핀을 아두이노와 연결해서 사용한다.


모듈 뒷면의 모습이다. 


더욱 자세한 정보는 아래의 링크를 참고하면 된다.


아두이노와의 연결은 아래와 같이 하면 된다.

0.96" OLED Display Module 

Arduino Uno 

GND

GND

VDD

3.3V (5V에 연결해도 됩니다.)

SCK

D10

SDA

D9

RES

D13

DC

D11

CS

D12


아두이노 우노와 OLED 모듈을 연결한 모습


■ 소스


아래 소스의 실행을 위해서는 아래 두 개의 라이브러리를 설치해야 한다.

Adafruit-GFX-Library-master.zip

Adafruit_SSD1306-master.zip

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
51
52
53
54
55
56
//** http://deneb21.tistory.com/429
 
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 
// software SPI 통신핀 설정
#define OLED_MOSI   9
#define OLED_CLK   10
#define OLED_DC    11
#define OLED_CS    12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
 
void setup() {
  //adafruit 로고(기본로고) 보여줌 (디스플레이 ON)
  display.begin();
  display.display();      //디스플레이 표시함, 이것을 실행하지 않으면 표시 안됨.
  delay(2000);
  display.clearDisplay(); //지우기 (다음 텍스트를 표시해야 지워짐)
  
  //텍스트 표시 #1
  display.setTextSize(1);             //텍스트 크기 조절
  display.setTextColor(WHITE);        //텍스트 색상
  display.setCursor(0,0);             //텍스트 표시 좌표 (X,Y 픽셀단위)
  display.println("Hello, world!");   //표시 텍스트
  display.setTextColor(BLACK, WHITE); //텍스트 색상: 흰색배경, 검은 글씨
  display.println("Hello, world!");
  display.setTextSize(2);             //텍스트 사이즈 크게, 2 
  display.setTextColor(WHITE);
  display.println("Hello, world!");
  display.display();
  delay(5000);
  display.clearDisplay();
 
  //텍스트 표시 #2
  display.setCursor(25,30);  //텍스트를 디스플레이 중간에 표시
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.println("Hello, world!");
  display.display();
  delay(3000);
  display.clearDisplay();  
 
  //텍스트 표시 #3
  display.setCursor(0,0);  //텍스트를 디스플레이 중간에 표시
  display.println("Hello, korea!");
  display.println("Hello, all!");
  display.display();  
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
}
cs


소스에 주석을 달았지만 다시 한 번 설명하자면 

  • display.begin() : 디스플레이 ON

  • display.setTextSize(사이즈) : 텍스트 크기 설정

  • display.setTextColor(텍스트컬러,배경컬러) : 텍스트 컬러 설정, 모노크롬 이기 때문에 BLACK, WHITE 밖에 없음, 배경컬러 생략가능

  • display.setCursor(X, Y) : 텍스트 표시 좌표설정 (픽셀 단위로서 X 는 0~128, Y는 0~64)

  • display.println("텍스트") : 표시할 텍스트 또는 숫자 지정, 이전 텍스트에 이어 쓰기를 원할 경우 display.print("텍스트") 도 사용가능

  • display.display() : 설정한 텍스트를 화면에 표시

  • display.clearDisplay() : 화면 지우기, 하지만 다른 텍스트 표시 전에는 이 명령을 사용해도 지워지지 않음


이 정도만 알면 OLED 디스플레이에 텍스트를 출력하는데 문제가 없는 듯 하다.




위의 소스를 실행하는 모습을 동영상으로 찍어 보았다. 크기에 비해 해상도가 높아서 예전의 16x2 LCD 보다는 쓰임새가 많은 모듈이다.

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요