CAFE

한국직업능력교육원

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

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

이번에는 도형을 그려봅시다.

1. 픽셀그리기

display.drawPixel(64, 32, WHITE);

 

2. 선 그리기

display.drawLine(0, 0, 127, 20, WHITE);

 

3. 직사각형 그리기

display.drawRect(10, 10, 50, 30, WHITE);    // 시작x, 시작y, 너비, 높이, 색상 

 

4. 채워진 직사각형그리기

display.fillRect(10, 10, 50, 30, WHITE) // 시작x, 시작y, 너비, 높이,색상 

 

5. 모서리가 둥근 직사각형

display. drawRoundRect (10, 10, 50, 30, WHITE) // 시작x, 시작y, 너비, 높이,색상 

 

6. 채워진 모서리 둥근 직사각형 그리기

display.fillRoundRect(10, 10, 30, 50, 2, WHITE) // 시작x, 시작y, 너비, 높이,색상 

 

7. 원 그리기

display.drawCircle(64, 32, 10, WHITE);  //시작x, 시작y, 반경, 색상

 

8. 채워진 원 그리기

display.fillCircle(64, 32, 10, WHITE); //시작x, 시작y, 반경, 색상

 

9.삼각형 그리기

display.drawTriangle(10, 10, 55, 20, 5, 40, WHITE); // x1,y1,x2,y2,x3,y3,색상

 

10. 채워진 삼각형 그리기

display.fillTriangle(10, 10, 55, 20, 5, 40, WHITE);

 

11. 거구로 그리기

display.invertDisplay(true);

 

삼각형을 거꾸로 그리기할려면

display.fillTriangle(10, 10, 55, 20, 5, 40, WHITE);

display.invertDisplay(true);

 

원래로 돌리려면  display.invertDisplay(false);

 

12. 소스코드

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

 

#define SCREEN_WIDTH 128

#define SCREEN_HEIGHT 64

 

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)

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

 

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 a single pixel in white

  display.drawPixel(64, 32, WHITE);

  display.display();

  delay(3000);

 

  // Draw line

  display.clearDisplay();

  display.drawLine(0, 0, 127, 20, WHITE);

  display.display();

  delay(3000);

 

  // Draw rectangle

  display.clearDisplay();

  display.drawRect(30, 10, 50, 30, WHITE);

  display.display();

  delay(3000);

  // Fill rectangle

  display.fillRect(30, 10, 50, 30, WHITE);

  display.display();

  delay(3000);

 

  // Draw round rectangle

  display.clearDisplay();

  display.drawRoundRect(10, 10, 30, 50, 2, WHITE);

  display.display();

  delay(3000);

  // Fill round rectangle

  display.clearDisplay();

  display.fillRoundRect(10, 10, 30, 50, 2, WHITE);

  display.display();

  delay(3000);

 

  // Draw circle

  display.clearDisplay();

  display.drawCircle(64, 32, 10, WHITE);

  display.display();

  delay(3000);

  // Fill circle

  display.fillCircle(64, 32, 10, WHITE);

  display.display();

  delay(3000);

 

  // Draw triangle

  display.clearDisplay();

  display.drawTriangle(10, 10, 55, 20, 5, 40, WHITE);

  display.display();

  delay(3000);

  // Fill triangle

  display.fillTriangle(10, 10, 55, 20, 5, 40, WHITE);

  display.display();

  delay(3000);

 

  // Invert and restore display, pausing in-between

  display.invertDisplay(true);

  delay(3000);

  display.invertDisplay(false);

  delay(3000);

}

 

void loop() {

 

}

 

13. 파일

 

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

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼