ESP8266 - OLED | ESP8266 - OLED

이 튜토리얼은 ESP8266을 OLED 디스플레이와 사용하는 방법을 알려줍니다. 자세히 말하자면, 우리는 다음을 배울 것입니다:

준비물

1×ESP8266 NodeMCU Amazon
1×Micro USB Cable Amazon
1×SSD1306 I2C OLED Display 128x64 Amazon
1×Jumper Wires Amazon
1×(Optional) 5V Power Adapter for ESP8266 Amazon
1×(Optional) ESP8266 Screw Terminal Adapter Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

OLED 디스플레이에 대해

다양한 종류의 OLED 디스플레이가 있습니다. ESP8266과 가장 많이 사용되는 OLED는 SSD1306 I2C OLED 128x64 및 128x32 디스플레이입니다.

OLED display

I2C OLED 디스플레이 핀아웃

  • GND 핀: ESP8266의 접지에 연결되어야 합니다.
  • VCC 핀: 디스플레이의 전원 공급으로, 3.3V 또는 5V에 연결되어야 합니다.
  • SCL 핀: I2C 인터페이스를 위한 직렬 클록 핀입니다.
  • SDA 핀: I2C 인터페이스를 위한 직렬 데이터 핀입니다.
OLED pinout

※ NOTE THAT:

OLED 모듈의 핀은 제조사와 모듈 유형에 따라 다를 수 있습니다. 항상 OLED 모듈에 인쇄된 라벨을 참조하는 것이 중요합니다. 주의하세요!

이 튜토리얼은 SSD1306 I2C 드라이버가 탑재된 OLED 디스플레이를 사용합니다. DIYables에서 제공하는 OLED 디스플레이로 테스트해 보았고 완벽하게 작동합니다.

선연결

ESP8266과 OLED 128x64 간의 배선도

ESP8266 NodeMCU OLED wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP8266의 핀 배치ESP8266 및 다른 구성 요소에 전원을 공급하는 방법에 대해 더 많이 보십시오.

ESP8266과 OLED 128x32 사이의 배선도

ESP8266 NodeMCU OLED 128x64 wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP8266과 OLED 디스플레이 간의 연결 표:

OLED Module ESP8266
Vin 3.3V
GND GND
SDA D2 (GPIO4)
SCL D1 (GPIO5)

ESP8266과 OLED 사용 방법

SSD1306 OLED 라이브러리 설치

  • Arduino IDE의 왼쪽 바에 있는 Libraries 아이콘을 클릭하세요.
  • "SSD1306"을 검색하고 Adafruit에서 SSD1306 라이브러리를 찾으세요.
  • 그런 다음, Install 버튼을 눌러 설치를 완료하세요.
ESP8266 NodeMCU OLED library

다른 라이브러리 종속성을 설치하라는 메시지가 표시됩니다.

모두 설치하려면 Install All 버튼을 클릭하세요.

ESP8266 NodeMCU Adafruit GFX sensor library

OLED 프로그래밍 방법

도서관을 포함하세요.

#include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>

OLED 화면의 크기를 128 x 64로 지정하십시오.

#define OLED_WIDTH 128 // OLED 디스플레이 너비, 픽셀 단위 #define OLED_HEIGHT 64 // OLED 디스플레이 높이, 픽셀 단위

128x32 OLED 디스플레이의 규격을 명시하십시오.

#define OLED_WIDTH 128 // OLED 디스플레이 너비(픽셀 단위) #define OLED_HEIGHT 32 // OLED 디스플레이 높이(픽셀 단위)

SSD1306 OLED 타입의 객체를 생성하십시오.

// I2C에 연결된 SSD1306 디스플레이 오브젝트를 선언한다 Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1);

setup() 함수에서 OLED 디스플레이를 초기화하세요.

// 128x64를 위한 주소 0x3C로 OLED 디스플레이 초기화 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while (true); }

그러면 텍스트, 사진을 보여주고 선을 그릴 수 있습니다...

앞으로 모든 코드는 OLED 128x64용이지만, 필요한 경우 화면 크기를 조정하고 좌표를 조정하여 OLED 128x32에 맞게 적용할 수 있습니다.

ESP8266 코드 - OLED에 텍스트 표시

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_WIDTH 128 // OLED 너비, 픽셀 단위 #define OLED_HEIGHT 64 // OLED 높이, 픽셀 단위 // I2C에 연결된 OLED 디스플레이 객체 생성 Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1); void setup() { Serial.begin(9600); // I2C 주소 0x3C로 OLED 디스플레이 초기화 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("failed to start SSD1306 OLED")); while (1); } delay(2000); // 초기화를 위해 2초 대기 oled.clearDisplay(); // 디스플레이 초기화 oled.setTextSize(1); // 텍스트 크기 설정 oled.setTextColor(WHITE); // 텍스트 색상 설정 oled.setCursor(0, 10); // 디스플레이에서 위치 설정 oled.println("esp32io.com"); // 텍스트 설정 oled.display(); // OLED에 표시 } void loop() { }

다음은 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에서 수직/수평 중앙 정렬하는 방법을 확인해 보세요.

ESP8266 코드 - OLED에 그리기

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_WIDTH 128 // OLED 폭, 픽셀 단위 #define OLED_HEIGHT 64 // OLED 높이, 픽셀 단위 // I2C에 연결된 OLED 디스플레이 객체 생성 Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1); void setup() { Serial.begin(9600); // I2C 주소 0x3C로 OLED 디스플레이 초기화 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 OLED 시작 실패")); while (1); } delay(2000); // 초기화를 위해 2초 기다림 oled.setCursor(0, 0); } void loop() { // 원 그리기 oled.clearDisplay(); oled.drawCircle(20, 35, 20, WHITE); oled.display(); delay(1000); // 원 채우기 oled.clearDisplay(); oled.fillCircle(20, 35, 20, WHITE); oled.display(); delay(1000); // 삼각형 그리기 oled.clearDisplay(); oled.drawTriangle(30, 15, 0, 60, 60, 60, WHITE); oled.display(); delay(1000); // 삼각형 채우기 oled.clearDisplay(); oled.fillTriangle(30, 15, 0, 60, 60, 60, WHITE); oled.display(); delay(1000); // 직사각형 그리기 oled.clearDisplay(); oled.drawRect(0, 15, 60, 40, WHITE); oled.display(); delay(1000); // 직사각형 채우기 oled.clearDisplay(); oled.fillRect(0, 15, 60, 40, WHITE); oled.display(); delay(1000); // 둥근 직사각형 그리기 oled.clearDisplay(); oled.drawRoundRect(0, 15, 60, 40, 8, WHITE); oled.display(); delay(1000); // 둥근 직사각형 채우기 oled.clearDisplay(); oled.fillRoundRect(0, 15, 60, 40, 8, WHITE); oled.display(); delay(1000); }

ESP8266 코드 - 이미지 표시

OLED에 이미지를 표시하려면 먼저 원본 형식에서 비트맵 배열로 변환해야 합니다. 이는 제공된 온라인 도구를 사용하여 수행할 수 있습니다. 다음 이미지는 이미지를 비트맵 배열로 변환하는 방법을 보여줍니다. 예를 들어, Arduino 아이콘을 비트맵 배열로 변환했습니다.

image to bitmap array

변환이 완료되면, 배열 코드를 가져다가 아래 코드의 ArduinoIcon 배열을 그것으로 교체하세요.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_WIDTH 128 // OLED 너비, 픽셀 단위 #define OLED_HEIGHT 64 // OLED 높이, 픽셀 단위 // I2C에 연결된 OLED 디스플레이 객체 생성 Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1); // 아두이노 아이콘 이미지의 비트맵 const unsigned char arduino_icon [] PROGMEM = { // 'arduino-icon', 128x64px 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x03, 0xff, 0xfc, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x7f, 0xf0, 0x00, 0x1f, 0xff, 0xff, 0xc0, 0x00, 0x1f, 0xe0, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x7f, 0xf0, 0x00, 0x7f, 0xff, 0xff, 0xe0, 0x00, 0x0f, 0xc0, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x3f, 0xe0, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x07, 0x80, 0x00, 0x7f, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xe0, 0x00, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x03, 0x80, 0x00, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0x00, 0x01, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x1f, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xff, 0xf0, 0x7f, 0xff, 0x00, 0x0f, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x0f, 0xff, 0xf0, 0x7f, 0xff, 0x80, 0x0f, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x7f, 0xff, 0x80, 0x07, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x3f, 0xff, 0xf0, 0x7f, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x7f, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xfe, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x03, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xfe, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xfc, 0x00, 0x01, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xfe, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, 0xff, 0xfc, 0x00, 0x01, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xfe, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, 0xff, 0xfc, 0x00, 0x01, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xfe, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, 0xff, 0xfc, 0x00, 0x01, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x7f, 0xff, 0xc0, 0x07, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x3f, 0xff, 0xf0, 0x7f, 0xff, 0x80, 0x07, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x7f, 0xff, 0x80, 0x07, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0x00, 0x01, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x1f, 0xe0, 0x00, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0x80, 0x00, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xe0, 0x00, 0x7f, 0xff, 0xff, 0xf0, 0x00, 0x0f, 0xc0, 0x00, 0x3f, 0xff, 0xff, 0xf8, 0x00, 0x3f, 0xf0, 0x00, 0x3f, 0xff, 0xff, 0xe0, 0x00, 0x1f, 0xe0, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xf8, 0x00, 0x1f, 0xff, 0xff, 0x80, 0x00, 0x3f, 0xe0, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x7f, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x7f, 0xfc, 0x00, 0x03, 0xff, 0xf8, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; void setup() { Serial.begin(9600); // I2C 주소 0x3C로 OLED 디스플레이 초기화 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 OLED 시작 실패")); while (1); } delay(2000); // 초기화를 위해 두 초 기다림 oled.setCursor(0, 0); } void loop() { oled.clearDisplay(); // 비트맵 표시 oled.drawBitmap(0, 0, arduino_icon, 128, 64, WHITE); oled.display(); delay(1000); // 디스플레이 반전 oled.invertDisplay(1); delay(1000); }

※ NOTE THAT:

  • 이미지의 크기는 화면의 크기를 초과해서는 안 됩니다.
  • OLED 128x32에 코드를 사용하고 싶다면, 이미지의 크기를 조정하고 oled.drawBitmap(); 함수에서 너비와 높이를 변경해야 합니다.

OLED 문제 해결

다음 단계를 따라 OLED가 제대로 작동하는지 확인하십시오:

  • 배선이 올바른지 확인하세요.
  • I2C OLED가 SSD1306 드라이버를 사용하는지 확인하세요.
  • ESP8266에서 I2C 주소 스캐너 코드를 사용하여 OLED의 I2C 주소를 확인하세요.
// I2C 주소 스캐너 프로그램 #include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println("I2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for (address = 1; address < 127; 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); // 다음 스캔까지 5초 기다림 }

시리얼 모니터에 표시된 출력은 다음과 같습니다: . 시리얼 모니터는 다음 결과를 보여줍니다:

COM6
Send
Scanning... I2C device found at address 0x3C ! done Scanning... I2C device found at address 0x3C ! done
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!