Adafruit_GFX.h Adafruit_SSD1306.h

    

 Adafruit의 SSD1306 라이브러리를 사용하는 기본적인 방법을 설명드리겠습니다. 이 라이브러리는 SSD1306 기반의 OLED 디스플레이를 쉽게 제어할 수 있게 해주는 여러 기능을 제공합니다.


먼저, SSD1306 라이브러리와 필요한 Adafruit_GFX 라이브러리를 아두이노 IDE에 설치해야 합니다.


**라이브러리 설치 방법:**


1. 아두이노 IDE를 엽니다.

2. 메뉴에서 "스케치" > "라이브러리 포함하기" > "라이브러리 관리..."를 선택합니다.

3. 라이브러리 관리자에서 "SSD1306"을 검색하고, Adafruit SSD1306 라이브러리를 찾아 설치합니다.

4. 동일한 방법으로 "GFX"를 검색하고, Adafruit GFX 라이브러리를 설치합니다.


**기본적인 사용법:**


```cpp

#include <Wire.h>      // I2C library

#include <Adafruit_GFX.h>   // Adafruit 그래픽 핵심 라이브러리

#include <Adafruit_SSD1306.h> // SSD1306 라이브러리


#define SCREEN_WIDTH 128 // OLED 디스플레이 너비, 픽셀 단위

#define SCREEN_HEIGHT 64 // OLED 디스플레이 높이, 픽셀 단위


// SSD1306 디스플레이의 I2C 주소 (대부분 0x3D 또는 0x3C입니다)

#define OLED_RESET     -1 // 리셋 핀이 필요 없으면 -1로 설정

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);


void setup() {

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 디스플레이 초기화

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

    for(;;); // 초기화 실패시 무한 루프

  }


  display.display(); // Adafruit 스플래시 스크린이 나타납니다

  delay(2000); // 2초간 대기

  display.clearDisplay(); // 디스플레이 클리어

}


void loop() {

  display.setTextSize(1);             // 텍스트 사이즈 설정

  display.setTextColor(SSD1306_WHITE); // 텍스트 색상 설정

  display.setCursor(0,0);             // 커서 위치 설정

  display.println(F("Hello, world!")); // 텍스트 출력

  display.display(); // 버퍼의 내용을 디스플레이에 출력

  delay(2000);

}

```


위 코드는 SSD1306 OLED 디스플레이를 초기화하고, "Hello, world!"라는 텍스트를 화면에 출력하는 예제입니다. `setup()` 함수에서 디스플레이를 초기화하고, `loop()` 함수에서 디스플레이에 텍스트를 쓰고 화면을 갱신합니다.


`display.begin()` 함수는 디스플레이의 초기화를 담당하며, `display.clearDisplay()`는 화면을 지우고, `display.display()`는 변경 사항을 디스플레이에 적용합니다.


이 라이브러리는 또한 다양한 그래픽 함수를 제공합니다. 예를 들어, 선 그리기, 원 그리기, 사각형 그리기 등의 기능을 사용할 수 있으며, `display.setRotation()`을 통해 화면 방향을 조정할 수 있습니다.


Adafruit GFX 라이브러리는 다양한 그래픽 함수들을 제공합니다. 이 함수들을 사용하여 선, 원, 사각형, 비트맵 이미지 등을 OLED 디스플레이에 그릴 수 있습니다. 다음은 몇 가지 주요 그래픽 함수들과 그 사용 방법입니다:


1. **drawPixel(x, y, color)**: 화면의 지정된 위치에 한 픽셀을 그립니다.

   ```cpp

   display.drawPixel(10, 10, SSD1306_WHITE);

   ```


2. **drawLine(x0, y0, x1, y1, color)**: 두 점을 연결하는 선을 그립니다.

   ```cpp

   display.drawLine(0, 0, display.width(), display.height(), SSD1306_WHITE);

   ```


3. **drawRect(x, y, width, height, color)**: 외곽선만 있는 사각형을 그립니다.

   ```cpp

   display.drawRect(10, 10, 50, 20, SSD1306_WHITE);

   ```


4. **fillRect(x, y, width, height, color)**: 채워진 사각형을 그립니다.

   ```cpp

   display.fillRect(10, 10, 50, 20, SSD1306_WHITE);

   ```


5. **drawCircle(x, y, radius, color)**: 중심 좌표와 반지름을 지정하여 원을 그립니다.

   ```cpp

   display.drawCircle(display.width()/2, display.height()/2, 10, SSD1306_WHITE);

   ```


6. **fillCircle(x, y, radius, color)**: 채워진 원을 그립니다.

   ```cpp

   display.fillCircle(display.width()/2, display.height()/2, 10, SSD1306_WHITE);

   ```


7. **drawRoundRect(x, y, width, height, radius, color)**: 둥근 모서리가 있는 사각형을 그립니다.

   ```cpp

   display.drawRoundRect(10, 10, 50, 20, 5, SSD1306_WHITE);

   ```


8. **fillRoundRect(x, y, width, height, radius, color)**: 둥근 모서리가 있는 채워진 사각형을 그립니다.

   ```cpp

   display.fillRoundRect(10, 10, 50, 20, 5, SSD1306_WHITE);

   ```


9. **drawTriangle(x0, y0, x1, y1, x2, y2, color)**: 세 점을 연결하는 삼각형을 그립니다.

   ```cpp

   display.drawTriangle(30, 16, 20, 40, 40, 40, SSD1306_WHITE);

   ```


10. **fillTriangle(x0, y0, x1, y1, x2, y2, color)**: 채워진 삼각형을 그립니다.

    ```cpp

    display.fillTriangle(30, 16, 20, 40, 40, 40, SSD1306_WHITE);

    ```


11. **drawChar(x, y, char, color, bg, size)**: 지정된 위치에 한 문자를 그립니다.

    ```cpp

    display.drawChar(10, 10, 'A', SSD1306_WHITE, SSD1306_BLACK, 2);

    ```


12. **drawBitmap(x, y, bitmap, w, h, color)**: 비트맵 이미지를 그립니다.

    ```cpp

    // 'bitmap'은 비트맵 데이터를 포함하는 byte 배열이어야 합니다.

    display.drawBitmap(30, 16, bitmap, 10, 10, SSD1306_WHITE);

    ```


모든 그리기 함수는 화면 버퍼에 그래픽을 먼저 그린 다음, `display.display()` 함수를 호출하여 OLED 화면에 실제로 나타나게 합니다. 이를 통해 여러 그래픽 요소를 조합하고 한 번에 화면에 출력할 수 있습니다.





댓글

이 블로그의 인기 게시물

js 스트링에서 요소 갯수 세기

STUDY

javascript cheatsheet