안녕하세요 오늘은 OLED에 원하는 그림 출력에 대해서 알려드리겠습니다.
이전에도 OLED를 이용한 예제를 보여드렸는데 이번에는 Adafruit_SSD1306 라이브러리를 이용하여
OLED에 본인이 원하는 그림을 넣는 방법을 소개하겠습니다.
GND: 접지로 아두이노 GND에 연결합니다.
VCC: 전원으로 아두이노 5V에 연결합니다.
SCL: I2C 통신으로 클럭 신호를 생성해 전달하는 역할
SDA: I2C 통신으로 실제 데이터가 전달되는 역할
SCL, SDA는 I2C 통신 방법을 사용합니다.
이전에 OLED를 간단하게 이용하는 방법을 소개해 드렸는데요
이전 예제는 U8glib를 사용한 예제입니다.
[이번 글에서는 Adafruit_SSD1306를 이용]
부품목록
브레드보드
NodeMCU는 연결 방법만 그림과 같게 연결하시고 소스코드는 동일하게 사용하시면 됩니다.
프로그램 및 라이브러리 설치
- 라이브러리 설치
Adafruit_GFX를 검색하여 Adafruit_GFX Library를 설치합니다.
Adafruit_SSD1306를 검색하여 설치합니다.
- LCD Assistant 설치
아래 링크로 가셔서 그림과 같이 LCD Assistant.zip를 다운로드합니다.
다운로드를 클릭합니다.
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(); //디스플레이에 표시
}
구현결과
이상입니다.. 감사합니다~
'프로그래밍 > 아두이노[Arduino]&라즈베리파이[Raspberry Pi]' 카테고리의 다른 글
HttpURLConnection 스프링 url 요청시 한글 깨짐 현상 해결 [안드로이드, 스프링] (0) | 2020.09.01 |
---|---|
라즈베리파이 B+ 에 OS 설치하기[라즈비안 설치] (0) | 2019.12.17 |
[아두이노] 토양수분감지센서로 OLED에 표시[Soil Moisture Sensor] (0) | 2019.05.03 |
[아두이노] OLED 사용해보기 [OLED에 텍스트 표시, 예제 실습] (3) | 2019.05.01 |
[아두이노] 조이스틱[joystick] 모듈을 사용하여 LED제어하기 (4) | 2019.04.29 |