아두이노 - OLED | Arduino - OLED
OLED(유기 발광 다이오드) 디스플레이는 LCD 디스플레이의 대안입니다. OLED는 초경량, 거의 종이처럼 얇고, 유연하며, 밝고 선명한 이미지를 생산합니다.
이 튜토리얼에서는 다음을 배우게 됩니다:
- 아두이노로 OLED 디스플레이를 사용하는 방법
- 아두이노를 사용하여 OLED에 텍스트, 숫자를 표시하는 방법
- OLED에서 텍스트, 숫자를 수직 및 수평 중앙에 정렬하는 방법
- 아두이노를 사용하여 OLED에 그리기
- 아두이노를 사용하여 OLED에 이미지를 표시하는 방법
준비물
1 | × | Arduino Uno | Amazon | |
1 | × | USB 2.0 cable type A/B | 쿠팡 | Amazon | |
1 | × | SSD1306 I2C OLED Display 128x64 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino | Amazon | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino Uno | Amazon |
OLED 디스플레이에 관하여
OLED 디스플레이에는 여러 종류가 있습니다. 그들은 통신 인터페이스, 크기 및 색상에서 서로 다릅니다:
- 통신 인터페이스: I2C, SPI
- 크기: 128x64, 128×32...
- 색상: 흰색, 파란색, 이중 색상...
SPI는 일반적으로 I2C보다 빠르지만 더 많은 아두이노 핀을 필요로 합니다. 반면 I2C는 단 두 개의 핀만 필요하며 다른 I2C 주변 장치와 공유할 수 있습니다. 이것은 핀과 통신 속도 사이의 절충입니다. 선택은 여러분에게 달려 있습니다. I2C 인터페이스를 가진 OLED의 경우, SSD1306, SH1106 드라이버와 같은 여러 종류의 드라이버가 있습니다. 이 튜토리얼은 SSD1306 I2C OLED 디스플레이 128x64와 128x32를 사용합니다.
I2C OLED 디스플레이 핀아웃
- GND pin: 아두이노의 접지에 연결해야 합니다.
- VCC pin: 디스플레이의 전원 공급 장치로, 아두이노의 5볼트 핀에 연결합니다.
- SCL pin: I2C 인터페이스용 직렬 클럭 핀입니다.
- SDA pin: I2C 인터페이스용 직렬 데이터 핀입니다.
※ NOTE THAT:
- OLED 모듈의 핀 순서는 제조업체와 모듈 유형에 따라 다를 수 있습니다. 항상 OLED 모듈에 인쇄된 라벨을 사용하세요. 자세히 보세요!
- 이 튜토리얼은 SSD1306 I2C 드라이버를 사용하는 OLED 디스플레이를 사용합니다. DIYables에서 제공하는 OLED 디스플레이로 테스트를 완료했으며, 문제 없이 작동합니다.
선연결
아두이노와 OLED 128x64 간의 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노와 OLED 128x32 사이의 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노와 OLED 128x64 사이의 실제 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노와 OLED 128x32 사이의 실제 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노 우노가 아닌 다른 아두이노를 사용하는 경우 핀이 다릅니다. 다른 아두이노에 대한 아래 표를 참조하세요.
OLED Module | Arduino Uno, Nano | Arduino Mega |
---|---|---|
Vin | 5V | 5V |
GND | GND | GND |
SDA | A4 | 20 |
SCL | A5 | 21 |
아두이노와 OLED 사용 방법
SSD1306 OLED 라이브러리 설치
- Arduino IDE의 왼쪽 바에 있는 Libraries 아이콘으로 이동하세요.
- "SSD1306"을 검색한 다음, Adafruit의 SSD1306 라이브러리를 찾으세요.
- 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
- 다른 라이브러리 종속성을 설치하라는 요청을 받게 될 것입니다
- 모든 라이브러리 종속성을 설치하려면 Install All 버튼을 클릭하세요.
OLED 프로그래밍 방법
- 라이브러리 포함하기
OLED 123x64의 화면 크기를 정의하세요.
OLED 128x32의 화면 크기를 정의하십시오.
SSD1306 OLED 객체를 선언하십시오.
setup() 함수에서 OLED 디스플레이를 초기화합니다.
그리고 나서 텍스트, 이미지를 보여주거나 선을 그릴 수 있습니다...
※ NOTE THAT:
이 시점부터 모든 코드는 OLED 128x64용으로 제공됩니다만, 화면 크기를 변경하고 필요하다면 좌표를 조정함으로써 쉽게 OLED 128x32에 맞게 조정할 수 있습니다.
아두이노 코드 - OLED에 텍스트 표시
다음은 OLED에 텍스트를 표시하는 데 사용할 수 있는 몇 가지 기능입니다:
- oled.clearDisplay(): 모든 픽셀이 꺼집니다
- oled.drawPixel(x,y, color): x,y 좌표에 픽셀을 그립니다
- oled.setTextSize(n): 글꼴 크기를 설정합니다, 1부터 8까지의 크기를 지원합니다
- oled.setCursor(x,y): 텍스트 작성을 시작할 좌표 설정
- oled.setTextColor(WHITE): 텍스트 색상 설정
- oled.setTextColor(BLACK, WHITE): 텍스트 색상, 배경 색상 설정
- oled.println(“message”): 문자 출력
- oled.println(number): 숫자 출력
- oled.println(number, HEX): 16진수 형식으로 숫자 출력
- oled.display(): 변경 사항을 적용하기 위해 이 메소드를 호출합니다
- oled.startscrollright(start, stop): 왼쪽에서 오른쪽으로 텍스트 스크롤
- oled.startscrollleft(start, stop): 오른쪽에서 왼쪽으로 텍스트 스크롤
- oled.startscrolldiagright(start, stop): 왼쪽 아래 코너에서 오른쪽 위 코너로 텍스트 스크롤
- oled.startscrolldiagleft(start, stop): 오른쪽 아래 코너에서 왼쪽 위 코너로 텍스트 스크롤
- oled.stopscroll(): 스크롤링 중지
OLED에서 텍스트/숫자를 수직 및 수평 중앙 정렬하는 방법
OLED에서 세로/가로 중앙 정렬하는 방법 보기 OLED에서 텍스트와 숫자를 세로 및 가로 중앙 정렬하는 방법
아두이노 코드 - OLED에 그리기
아두이노 코드 - 이미지 표시
OLED에 이미지를 그리려면 먼저 이미지(모든 형식)를 비트맵 배열로 변환해야 합니다. 이 변환은 온라인 도구를 사용하여 수행할 수 있습니다. 아래 이미지에서 이미지를 비트맵 배열로 변환하는 방법을 확인하세요. 저는 아두이노 아이콘을 비트맵 배열로 변환했습니다.
변환 후, 배열 코드를 복사하고 아래 코드의 ArduinoIcon 배열에서 배열 코드를 업데이트하세요.
※ NOTE THAT:
- 이미지 크기는 화면 크기보다 작거나 같아야 합니다.
- 위의 코드를 OLED 128x32에 맞게 조정하려면 이미지의 크기를 조절하고 oled.drawBitmap(); 함수에서 너비/높이를 변경해야 합니다.
OLED 문제 해결
OLED가 아무것도 표시하지 않으면 다음 체크리스트를 수행하십시오:
- 배선이 올바른지 확인하세요.
- I2C OLED가 SSD1306 드라이버를 사용하는지 확인하세요.
- 아래의 I2C 주소 스캐너 코드를 Arduino에서 실행하여 OLED의 I2C 주소를 확인하세요.
Serial Monitor에서의 결과: