CAFE

한국직업능력교육원

[스크랩] [Arduino 실습 43] SSD1306 I2C OLED 사용하기-5

작성자송명규|작성시간26.06.10|조회수38 목록 댓글 0

이번에는 이미지파일을 표시해 보자

 

1단계 :  사용할 이미지 사진을 복사하시어 그림판에 붙여넣기합니다.

2단계 : 좌측으로 회전한다.

 이유는 가로새로를 교체하여 표시하려고 = 이유는 가로측이 128로 더 길어서 조금이라도 많이 표시되게할려고

회사 로그나 간단한 이미지 그림은 회전하지 않아도 된다.

 

3단계 : 흑백으로 처리한다.

화일메뉴에서 속성선택

4단계 : 사이즈 조절

5단계 : 단색BMP 파일로 저장하기

파일메뉴에서 다른이름으로 저장하기 선택 후

여기까진 그래칙LCD나 OLED 에 관계된 모든 라이브러리에 상관없이 공통으로 작업해야하는 과정입니다.

즉 SSD1306 라이브러리를 사용하든 U8G2 라이브러리를 사용하든 모두 다 똑 같이 이 작업 단계를 거처야만 합니다.

 

6.  단색BMP 그림파일 Data 추출

1차원배열형태로 그림 Data를 추출하여 소스코드에 추가합니다.

여기까지도 라이벌리에 상관없이, 그래픽LCD, OLED에 상관없이 절차가 동일합니다.

 

그런데 지금부터는 그래픽 LCD, OLED, 지원하는 라이브러리에 따라서 작업내용이 달라질수 있습니다.

일단 저는 제가ㅣ주로 사용하는 프로그램으로 해 보니겠습니다.

이 방법은 차후 그래픽 LCD 사용할때도 그대로 적용됩니다.

 또한 차후 U8G2 라이브러리 사용시에도 그대로 적용됩니다.

 

제가 이 단계에서 주로 사용하는 프로그램을 올리도록 하겠습니다.

 

   -  1번 프로그램 == U8G2 LIB 사용

제가올린 프로그램 말고도 제가 알고있는 프로그램은 2개 더 있습니다. 만...차후에 올려드리도록 하겠습니다.

링크만 올립니다.

https://sourceforge.net/projects/lcd-image-converter/files/latest/download

온라인 이미지 편집기도 있습니다. == 온라인 무료 이미지 자르기, 크기 조절, 좌우반전, 회전, 변환, 압축 편집기

https://www.resizepixel.com/ko

 

== 2번 프로그램 == 온라인 프로그램도 U8G2 LIB에 사용

전 상기에 첨부된 파일 프로그램을 사용하여 데이터를 추출해 보겠습니다.  제가 주로사용하는 프로그램 입니다.

 

상기와 같이 설정 후 다른이름으로 저장한다.

아아ㅎㅎㅎ

아 근데 제가 늘상 사용하던 프로그램으로는 그림이 표시가 안 되네요..   어찌 이런일이.... 헐

제가 사용하는 프로그램은 U8G2 라이브러리에서 할때는 제가 사용하는 프로그램을 사용하도록 하겠습니다.

 

그래서 사이트에 연재중인 프로그램으로 해보겠습니다.

 

3번 프로그램 == SSD1306 + GFX 라이브러리 사용

 

아래 프로그램을 다운받아 설치하세요

1). 파일메뉴에서 OPEN으로 선택 후 그림판에서 저장한 단색 bmp를 불러온다

 2). 옵션에 컨버전을 선택한다.

3). 아래와 같이 설정한다.

  • 유형: 단색, 임계값 디더링
  • 주요 스캔 방향: 위에서 아래로
  • 라인 스캔 방향: 앞으로

4) 이미지 탭으로 이동하여 아래와 같이 설정 후 확인을 누른다.

  • 행으로 분할
  • 블록 크기: 8비트
  • 바이트 순서: Little-Endian

5). 파일 메뉴에서 변환을 선택한 후 저장한다.

저장 후 소스 코드에서 데이터를 불러와 복사 붙여넣기 하면 된다.

 

요걸로하니 잘되네요

앞으로 OLED 사용시 아다크라프트 SSD306 라이브러리 사용시에는 이 프로그램으로 사용하도록 정리하겠습니다.

제가 주로 사용하는 프로그램은 U8G2 라이브러리 사용시에만 사용하는걸로 하겠습니다.

 

7. 실행결과

밑에 밑에 사진처럼 실행 됩니다.

밑에건 반전시킨겁니다.

8. 소스코드

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

 

#define SCREEN_WIDTH 128

#define SCREEN_HEIGHT 64

 

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

 

static const unsigned char PROGMEM image_data[] = {

 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, 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, 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, 0xdf, 0xff, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0xff, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0xff, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x50, 0x7f, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xf8, 0xff, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf0, 0x3f, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xfc, 0x3f, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xfc, 0x1f, 0xff,

    0xff, 0xaa, 0xab, 0xae, 0xab, 0xaa, 0xab, 0xea, 0xba, 0xea, 0xbe, 0xbf, 0xef, 0xfe, 0x3e, 0xff,

    0xff, 0x80, 0x21, 0x84, 0x01, 0x00, 0x01, 0xe0, 0x10, 0xe0, 0x1c, 0x3f, 0xc7, 0x54, 0x14, 0x7f,

    0xff, 0x80, 0x23, 0x8c, 0x03, 0x02, 0x00, 0xe0, 0x18, 0xe2, 0x1e, 0x3f, 0x8e, 0x0e, 0x18, 0x3f,

    0xff, 0x80, 0x21, 0x84, 0x02, 0x00, 0x00, 0xc0, 0x11, 0xe2, 0x1c, 0x3f, 0xdc, 0x0c, 0x00, 0x1f,

    0xff, 0x80, 0xa3, 0x8c, 0x0a, 0x0c, 0x00, 0xc0, 0x91, 0xe2, 0x0e, 0x3f, 0x9c, 0x0c, 0x04, 0x3f,

    0xff, 0x51, 0x43, 0x04, 0x56, 0x10, 0x10, 0x41, 0x51, 0xc2, 0x0e, 0x7f, 0x9c, 0x04, 0x04, 0x1f,

    0xff, 0xe3, 0xe3, 0x88, 0xfe, 0x38, 0x38, 0x43, 0xf1, 0xe2, 0x0e, 0x3f, 0xbc, 0x08, 0x18, 0x3f,

    0xff, 0xe3, 0xc3, 0x08, 0x7e, 0x18, 0x78, 0x47, 0xf1, 0xc0, 0x04, 0x7f, 0xbc, 0x18, 0x18, 0x1f,

    0xff, 0xe3, 0xe3, 0x88, 0xfe, 0x38, 0xf8, 0x43, 0xf3, 0xe2, 0x0c, 0x7f, 0xbc, 0x18, 0x38, 0x3f,

    0xff, 0xe3, 0xc0, 0x08, 0x76, 0x10, 0x78, 0x43, 0x71, 0xc4, 0x04, 0x7f, 0xb8, 0x10, 0x10, 0x1f,

    0xff, 0xe3, 0xe0, 0x08, 0x26, 0x38, 0x78, 0x40, 0x23, 0xe6, 0x04, 0x3f, 0xb8, 0x38, 0x38, 0x3f,

    0xff, 0xe1, 0xc0, 0x08, 0x04, 0x18, 0xf8, 0x40, 0x21, 0xc4, 0x44, 0x7f, 0xb0, 0x10, 0x10, 0x3f,

    0xff, 0xe3, 0xc0, 0x08, 0x06, 0x38, 0xf8, 0xc0, 0x23, 0xc6, 0x40, 0xff, 0xb8, 0x30, 0x30, 0x7f,

    0xff, 0xc7, 0xc0, 0x10, 0x04, 0x10, 0xf0, 0x40, 0x21, 0xc4, 0x40, 0x7f, 0x90, 0x30, 0x30, 0x7f,

    0xff, 0xc3, 0x82, 0x18, 0x2e, 0x30, 0xf0, 0x82, 0x23, 0xc4, 0x60, 0x7f, 0xb0, 0x20, 0x60, 0x3f,

    0xff, 0xc7, 0xc7, 0x10, 0xfc, 0x30, 0xf0, 0xc7, 0xe1, 0xc4, 0x40, 0x7f, 0xf0, 0x60, 0x60, 0x1f,

    0xff, 0xc3, 0xcf, 0x18, 0xfc, 0x38, 0xe0, 0x8f, 0xe3, 0xcc, 0x60, 0xff, 0xe0, 0xc0, 0xe0, 0x9f,

    0xff, 0xc3, 0x87, 0x10, 0xfc, 0x30, 0x71, 0x87, 0xc3, 0x84, 0x60, 0x7f, 0xe0, 0x40, 0x40, 0x5f,

    0xff, 0xc3, 0x8e, 0x38, 0xfc, 0x38, 0x60, 0x8f, 0xe3, 0x8c, 0xe0, 0xff, 0xe0, 0xe0, 0xe0, 0xdf,

    0xff, 0xc7, 0x86, 0x10, 0x54, 0x70, 0x41, 0x85, 0x41, 0x04, 0x70, 0xff, 0xc0, 0xc0, 0xc0, 0xdf,

    0xff, 0x87, 0x8e, 0x30, 0x8c, 0x78, 0x03, 0x88, 0xe0, 0x88, 0xf8, 0xff, 0xc0, 0xc0, 0xc1, 0xff,

    0xff, 0x87, 0x86, 0x10, 0x04, 0x78, 0x03, 0x80, 0x60, 0x08, 0x70, 0xff, 0x80, 0xc1, 0x81, 0xdf,

    0xff, 0x87, 0x8e, 0x30, 0x08, 0x7c, 0x03, 0x80, 0x70, 0x18, 0xf8, 0xff, 0x81, 0x81, 0x83, 0xff,

    0xff, 0xd7, 0x8e, 0x10, 0x08, 0x7c, 0x07, 0x00, 0x70, 0x18, 0x70, 0xff, 0x81, 0x81, 0x01, 0xdf,

    0xff, 0xff, 0xae, 0xbe, 0xa8, 0xfe, 0xaf, 0xae, 0xfe, 0xbe, 0xfe, 0xff, 0x83, 0x83, 0x83, 0xdf,

    0xff, 0xff, 0xff, 0xf7, 0xf0, 0x7f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0x03, 0x81, 0x01, 0xdf,

    0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa3, 0x83, 0xa3, 0x9f,

    0xff, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xff, 0x9f,

    0xff, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xbf,

    0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0x1f,

    0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xfe, 0x3f,

    0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xfc, 0x7f,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xfc, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x30, 0x7f,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x21, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x01, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xab, 0xff,

    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 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, 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(115200);

 

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {

    Serial.println(F("SSD1306 allocation failed"));

    for(;;);

  }

  delay(2000); // Pause for 2 seconds

 

  // Clear the buffer.

  display.clearDisplay();

 

  // Draw bitmap on the screen

  display.drawBitmap(0, 0, image_data, 128, 64, 1);

  display.display();

}

 

void loop() {

 

}

 

9. 파일

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼