
임베디드 프로그래밍을 하면서 가장 걱정이 되는 부분 중 하나가 아마 데이터 시트 읽는 부분이 아닐까 싶네요. 저도 그랬구요...
암튼 꽤 바쁜 일주일을 보냈습니다.
이제 막 선 연결을 끝낸 상태에서 "그럼 화면은 어떻게 띄우지!" 라는 걱정이 되었으니까요ㅋㅋㅋ
I2C 방식으로 연결된건 알겠는데, 그 다음은? 이라는 생각이 되더라구요.
그래서 대충 해결책!
일단 gpt한테 화면을 띄우는 코드를 부탁했습니다. 결과는?
대성공!!!

근데 이게 저희가 원하는건 아니죠? 저희는 단순히 흰 화면을 보는게 아니라 글씨를 띄우거나 하는걸 원하는거잖아요!
그래서 데이터시트와 이미 만들어진 코드를 보고 역으로 분석을 해 나갈 것입니다.
누가 가르쳐주는 사람이 없으니 이렇게라도 해야죠 뭐...ㅋㅋ
코드는 대충 이런식으로 생겼었습니다.
31 void initOLED(int fd)
32 {
33 sendCommand(fd, 0xAE); // display off
34
35 sendCommand(fd, 0x20);
36 sendCommand(fd, 0x00);
37
38 sendCommand(fd, 0xB0);
39
40 sendCommand(fd, 0xC0);
41
42 sendCommand(fd, 0x00);
43 sendCommand(fd, 0x10);
44
45 sendCommand(fd, 0x40);
46
47 sendCommand(fd, 0x81);
48 sendCommand(fd, 0xFF);
49
50 sendCommand(fd, 0xA0);
51
52 sendCommand(fd, 0xA6);
53
54 sendCommand(fd, 0xA8);
55 sendCommand(fd, 0x3F);
56
57 sendCommand(fd, 0xA4);
58
59 sendCommand(fd, 0xD3);
60 sendCommand(fd, 0x00);
61
62 sendCommand(fd, 0xD5);
63 sendCommand(fd, 0xF0);
64
65 sendCommand(fd, 0xD9);
66 sendCommand(fd, 0x22);
67
68 sendCommand(fd, 0xDA);
69 sendCommand(fd, 0x12);
70
71 sendCommand(fd, 0xDB);
72 sendCommand(fd, 0x20);
73
74 sendCommand(fd, 0x8D);
75 sendCommand(fd, 0x14);
76
77 sendCommand(fd, 0xAF); // display on
78 }
와우...
sendCommand()도 한 번 확인해볼까요?
11 void sendCommand(int fd, uint8_t cmd)
12 {
13 uint8_t buffer[2];
14
15 buffer[0] = 0x00; // command mode
16 buffer[1] = cmd;
17
18 write(fd, buffer, 2);
19 }
음... 대충 살펴본 결과, sendCommand()는 cmd를 fd로 보내주는 것 같습니다.
그리고 보내지는 cmd는 0xDB, 0x81 ... 아이구야 머리가 아픕니다.
이게 뭔지 알기 위해서는 데이터시트가 필요합니다.
https://www.hpinfotech.ro/SSD1309.pdf
제가 참고한 데이터시트입니다.

제가 이해한 바로는, sendCommand()에 저 Hex값을 보내주면 값이 세팅된다는 것 같습니다.
예를 들어, sendCommand(fd, 0xAE) 이라고 하면 디스플레이를 모두 끄는거죠.
잠깐만, 생각을 잘 해보면, sendCommand()에서 file descriptor를 굳이 설정해줄 필요가 있을까요? 이 모든걸 Class 로 만든 다음 파일 디스크립터는 클래스에서 넘겨주기만 하면 되지 않을까요?
이건 다음번에 올려보도록 하겠습니다.
제가 설정한 세팅값까지 함께요ㅎㅎ
| [우당탕탕 OLED 드라이버 만들기] 3. 클래스 분리 (0) | 2026.06.09 |
|---|---|
| [우당탕탕 OLED 드라이버 만들기] 1. 핀 세팅과 I2C 설정 (0) | 2026.05.15 |
| [우당탕탕 OLED 드라이버 만들기] 0. 라즈베리파이와 oled 패널 구입 (0) | 2026.05.15 |
댓글 영역