본문 바로가기

프로그래밍/아두이노[Arduino]&라즈베리파이[Raspberry Pi]

[아두이노] OLED[0.96인치(128*64)]에 원하는 그림 출력-NodeMCU포함



안녕하세요 오늘은 OLED에 원하는 그림 출력에 대해서 알려드리겠습니다.

이전에도 OLED를 이용한 예제를 보여드렸는데 이번에는 Adafruit_SSD1306 라이브러리를 이용하여

OLED에 본인이 원하는 그림을 넣는 방법을 소개하겠습니다.

 

 

GND: 접지로 아두이노 GND에 연결합니다.

VCC: 전원으로 아두이노 5V에 연결합니다.

SCL: I2C 통신으로 클럭 신호를 생성해 전달하는 역할

SDA: I2C 통신으로 실제 데이터가 전달되는 역할

SCL, SDA는 I2C 통신 방법을 사용합니다.

 

 

 

 

 

이전에 OLED를 간단하게 이용하는 방법을 소개해 드렸는데요

이전 예제는 U8glib 사용한 예제입니다.

[이번 글에서는 Adafruit_SSD1306를 이용]

 

 

[아두이노] OLED 사용해보기 [OLED에 텍스트 표시, 예제 실습]

안녕하세요 이번에는 간단하게 OELD에 텍스트를 표시하는것과 기본적으로 제공하는 GraphicsTest 예제를 사용하는 방법에 대해 작성해 보았습니다. 핵심부품 부품목록 브레드보드 회로도 예제사용 스케치 ->..

baessi.tistory.com

  

부품목록

  

브레드보드

NodeMCU는 연결 방법만 그림과 같게 연결하시고 소스코드는 동일하게 사용하시면 됩니다.

프로그램 및 라이브러리 설치

- 라이브러리 설치

Adafruit_GFX를 검색하여 Adafruit_GFX Library를 설치합니다.

Adafruit_SSD1306를 검색하여 설치합니다.

- LCD Assistant 설치

아래 링크로 가셔서 그림과 같이 LCD Assistant.zip를 다운로드합니다.

 

Bitmap converter for mono and color LCD displays

LCD Assistant LCD Assistant is a free tool for converting monochromatic bitmaps to data arrays for easy use with programs for embedded systems with microcontrollers and graphics monochromatic LCD displays like a T6963C, KS0108, SED1335 etc. Program create

en.radzio.dxp.pl

다운로드를 클릭합니다.

LCD Assistant 설치 이유?

아두이노에서 char(문자) 형태로 변환하여 그림 형식이 아닌 문자 형태로 소스코드에 집어넣기 위해 사용합니다.

- 이미지 변환하기

 

그림판에서 아래와 같이 적절하게 크기를 축소합니다.

주의!! 그림판에서 이미지 저장 시 꼭 비트맵으로 저장,

JPG나 PNG는 LCD Assistant가 인식을 못 합니다!

저는 24비트 비트맵으로 저장했지만 프로그램에서 추출 시 16비트 혹인 단일로 뽑아내는 것 같습니다.

 

 

Settings - Horizontal 체크

아래 사진과 같이 저장합니다

 

메모장을 열어서 저장한 파일을 드래그하여 불러옵니다.

자 그럼 코드가 나오는데요, 아래 네모칸처럼 복사를 하고 추후 소스 코드에 집어넣도록 하겠습니다.

 

 

 

 

소스코드

/*OLED 관련 라이브러리*/
#include <Adafruit_GFX.h>    
#include <Adafruit_SSD1306.h>
 
 
#define OLED_RESET LED_BUILTIN        //OLED 선언
Adafruit_SSD1306 display(OLED_RESET); //OLED 선언
 
 
//OLED 비트맵 이미지 관련 설정
static const unsigned char PROGMEM imgText [] = {
//
//이 부분에 복사한 코드 삽입!!
//
};
 
void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //OLED 선언
}
void loop() {
  display.clearDisplay();     //OLED 초기화
  display.setTextSize(1);     //폰트 크기 설정
  display.setTextColor(WHITE);//폰트 색상 설정
  display.setCursor(0,0);     //텍스트 위치 설정
  
  display.drawBitmap(30,0,imgText,64,64,1); //이미지 그리기
  //drawBitmap(가로위치, 세로위치, 이미지코드, 가로크기, 세로크기, 색상-기본값1)
  //가로와 세로크기는 꼭 이미지 크기와 동일하게 넣어주셔야 합니다. 
  display.display(); //디스플레이에 표시
}

 

구현결과

 

이상입니다.. 감사합니다~