우리 대부분은 대부분의 프로젝트에서 사용자에게 일부 정보를 표시하는 데 사용되는 16x2 도트 매트릭스 LCD 디스플레이에 익숙 할 것입니다. 그러나 이러한 LCD 디스플레이는 수행 할 수있는 작업에 많은 제한이 있습니다. 이 튜토리얼에서 우리는 OLED 디스플레이와 Arduino 사용 방법에 대해 배울 것 입니다. 시장에는 다양한 유형의 OLED 디스플레이가 있으며이를 작동시키는 방법도 많습니다. 이 튜토리얼에서는 분류와 프로젝트에 가장 적합한 분류에 대해 논의합니다.
필요한 하드웨어:
- 7 핀 128x64 OLED 디스플레이 모듈 (SSD1306)
- Arduino UNO / 나노
- 브레드 보드
- 전선 연결
- 컴퓨터 / 노트북
OLED 디스플레이에 대해 알아보기:
OLED라는 용어는 " 유기 발광 다이오드"의 약자 로 대부분의 TV에서 사용되는 것과 동일한 기술을 사용하지만 그에 비해 픽셀 수가 적습니다. 이 멋진 디스플레이 모듈이 우리의 프로젝트를 멋지게 보이게 만들 것이기 때문에 Arduino와 인터페이스하는 것은 정말 재미 있습니다. 여기에서 OLED 디스플레이 및 유형에 대한 전체 기사를 다뤘습니다.
우리가 사용하는 단색 7 핀 SSD1306 0.96 "OLED 디스플레이. 이 디스플레이를 선택하는 이유는 SPI 3 와이어 모드, SPI 4 와이어 모드 및 IIC 모드와 같은 세 가지 다른 통신 프로토콜에서 작동 할 수 있기 때문입니다. 이 튜토리얼 에서는 가장 빠른 통신 모드이고 기본 모드이므로 SPI 4 선 모드에서 모듈을 사용하는 방법을 다룹니다.
핀과 그 기능은 아래 표에 설명되어 있습니다.
핀 번호 |
핀 이름 |
다른 이름들 |
용법 |
1 |
Gnd |
바닥 |
모듈의 접지 핀 |
2 |
Vdd |
Vcc, 5V |
전원 핀 (3-5V 허용) |
삼 |
SCK |
D0, SCL, CLK |
시계 핀 역할을합니다. I2C 및 SPI 모두에 사용 |
4 |
SDA |
D1, MOSI |
모듈의 데이터 핀. IIC 및 SPI 모두에 사용 |
5 |
RES |
RST, 리셋 |
모듈 재설정 (SPI 중에 유용) |
6 |
DC |
A0 |
데이터 명령 핀. SPI 프로토콜에 사용 |
7 |
CS |
칩 선택 |
SPI 프로토콜에서 둘 이상의 모듈을 사용할 때 유용합니다. |
이 튜토리얼에서는 단순히 4-Wire SPI 모드에서 모듈을 작동시키고 나머지는 다른 튜토리얼을 위해 남겨 둘 것입니다.
Arduino 커뮤니티는 이미이를 훨씬 더 간단하게 만드는 데 직접 사용할 수있는 많은 라이브러리를 제공했습니다. 몇 개의 라이브러리를 사용해 보았는데 Adafruit_SSD1306 라이브러리가 사용하기 매우 쉬우 며 그래픽 옵션이 몇 가지 있다는 것을 알았습니다. 따라서이 튜토리얼에서 동일한 것을 사용할 것입니다. 그러나 프로젝트에 메모리 / 속도 제약이있는 경우 U8g 라이브러리를 사용하여 더 빠르게 작동하고 프로그램 메모리를 덜 차지하므로 사용해보십시오.
하드웨어 및 연결:
Arduino와 인터페이스하는 SSD1306 OLED 의 회로도 는 매우 간단하며 아래에 나와 있습니다.
우리는 단순히 OLED 모듈과 Arduino 사이에 SPI 통신 을 설정했습니다. OLED는 3V-5V에서 실행되고 전력을 거의 소비하지 않기 때문에 외부 전원 공급 장치가 필요하지 않습니다. 와이어를 사용하여 연결하거나 내가 사용한 브레드 보드를 사용하여 쉽게 실험 할 수 있습니다. 연결은 아래 이야기에도 나와 있습니다.
S. 아니 |
OLED 모듈의 핀 이름 |
Arduino의 핀 이름 |
1 |
Gnd, 접지 |
바닥 |
2 |
Vdd, Vcc, 5V |
5V |
삼 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, 리셋 |
13 |
6 |
DC, A0 |
11 |
7 |
CS, 칩 선택 |
12 |
참고: 전원을 켜는 것만으로는 OLED 모듈의 백라이트 / 글로우를 시각화 할 수 없습니다. OLED 디스플레이의 변경 사항을 확인하려면 올바르게 프로그래밍해야합니다.
Arduino 용 SSD1306 OLED 디스플레이 프로그래밍:
연결이 준비되면 Arduino 프로그래밍을 시작할 수 있습니다. 앞서 말했듯이 우리는이 OLED 모듈 작업을 위해 Adafruit 라이브러리와 GFX 라이브러리를 사용할 것입니다. 단계에 따라 OLED 디스플레이를 테스트합니다.
1 단계: 아래 링크를 사용하여 Github에서 Adafruit 라이브러리 및 GFX 라이브러리를 다운로드합니다 .
- Adafruit 라이브러리
- GFX 그래픽 라이브러리
2 단계: 두 개의 Zip 파일을 다운로드해야합니다. 이제 다음과 같이 Arduino에 추가하십시오.
Sketch-> Include Library-> Add Zip 라이브러리 는 아래와 같습니다. 그런 다음 방금 다운로드 한 라이브러리를 선택합니다. 한 번에 하나의 라이브러리 만 선택할 수 있으므로이 단계를 다시 반복해야합니다.
3 단계: 아래 이미지와 같이 파일-> 예제-> Adafruit SSD1306-> SSD1306_128 * 64_SPI.ino 를 선택하여 예제 프로그램을 시작합니다.
4 단계: 64 행 상단의 예제 프로그램 내부에 아래 이미지와 같이 "#define SSD1306_LCDHEIGHT 64" 행을 추가합니다.
5 단계: 이제 프로그램을 업로드하면 아래 그림과 같이 기본 Adafruit 예제 코드로 OLED 디스플레이가 실행되는 것을 볼 수 있습니다. 전체 작업 비디오는 마지막에 주어진다.
이 예제 프로그램은 OLED 화면에 표시 될 수있는 모든 가능한 그래픽을 보여줍니다. 이 코드는 비트 맵을 만들고, 선 / 원 / 직사각형을 그리고, 픽셀로 재생하고, 다른 글꼴과 크기로 문자 및 문자열을 표시하는 데 충분해야합니다.
라이브러리와 그 기능을 더 잘 이해하고 싶다면 더 읽을 수 있습니다. 코드의 각 정크는 주석 줄의 도움으로 분할되고 설명됩니다. 이 기사의 끝에 완전한 코드 가 제공됩니다.
화면 표시 및 지우기:
OLED 화면에 글씨를 쓰는 것은 블랙 보드에 글씨를 쓰는 것과 같으며, 값을 쓰고, 덮어 쓰기 전에 정리해야합니다. 다음 명령은 디스플레이를 쓰고 지우는 데 사용됩니다
display.display (); // 디스플레이에 쓰기 display.clearDisplay (); // 디스플레이 지우기
문자 변수 표시:
변수 내부의 내용을 표시하려면 다음 코드를 사용할 수 있습니다.
char i = 5; // 표시 할 변수 display.setTextSize (1); // 텍스트 크기 선택 display.setTextColor (WHITE); // 흑백 디스플레이의 경우 whit 만 가능합니다. display.setCursor (0,0); // 0,0은 OLED 화면의 왼쪽 상단입니다. display.write (i); // 표시 할 변수 작성
선, 원, 사각형, 삼각형 그리기:
디스플레이에 기호를 추가하려면 다음 코드를 사용하여 다음 중 하나를 그릴 수 있습니다.
display.drawLine (display.width ()-1, 0, i, display.height ()-1, WHITE); // 무효 drawLine (x0, y0, x1, y1, color); display.drawRect (i, i, display.width ()-2 * i, display.height ()-2 * i, WHITE); // void drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, WHITE); // void drawTriangle (x0, y0, x1, y1, x2, y2, color); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, color);
화면에 문자열 그리기:
다음 코드를 사용하여 특정 위치와 크기로 화면에 메시지를 표시 할 수 있습니다.
display.setTextSize (2); // 텍스트 크기 설정 display.setTextColor (WHITE); // 색상 설정 display.setCursor (10,0); // 문자열은 10,0 (x, y)에서 시작합니다. display.clearDisplay (); // 화면의 이전 디스플레이를 지 웁니다. display.println ("Circuit Digest"); // 여기에 문자열을 인쇄합니다.“Circuit Digest”display.display (); // 화면에 텍스트 보내기
비트 맵 이미지 표시:
OLED 모듈로 할 수있는 한 가지 신뢰할 수없는 일은 비트 맵을 표시하는 데 사용할 수 있다는 것입니다. 다음 코드는 비트 맵 이미지를 표시하는 데 사용됩니다.
static const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111, B00110011, B100111110000, B000011111, B100111110000, B00011111, B11000000 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, 비트 맵, w, h, WHITE); // void drawBitmap (x, y, * 비트 맵, w, h, color);
보시다시피 이미지를 표시하려면 비트 맵 데이터를 PROMGMEM 지시문의 형태로 프로그램 메모리에 저장해야합니다. 간단히 말해서, 위와 같이 배열에서 시퀀스 또는 값을 전달하여 각 픽셀에 대해 수행 할 작업을 OLED 디스플레이에 지시해야합니다. 이 배열에는 이미지의 비트 맵 데이터가 포함됩니다.
복잡하게 들릴 수 있지만 웹 도구를 사용 하면 이미지를 비트 맵 값 으로 변환하고 위의 배열에로드하는 것이 매우 쉽습니다.
이미지를로드하고 설정을 조정하기 만하면 원하는 이미지 미리보기를 얻을 수 있습니다. 그런 다음 "Generate Code"를 클릭하여 코드를 복사하여 어레이에 붙여 넣습니다. 프로그램을 업로드하면 모두 완료됩니다. 나는 배트맨 로고를 표시해 보았고 이것이 어떻게 밝혀졌습니다.
이러한 라이브러리로 수행 할 수있는 작업은 여전히 많습니다. 완전한 가능성을 알고 싶다면 Adafruit GFX 그래픽 프리미티브 페이지를 방문하십시오.
이것을 실행하고 일부 프로젝트에서 OLED 디스플레이를 구현할 준비가 되었기를 바랍니다. 문제가 있으시면 댓글란에 공유 해주세요. 최선을 다해 수정하겠습니다.