2004 I2C LCD로 장식만들기
연말이 가까워지면서 불빛 장식들이 하나 둘 보이는데, 집에는 하나도 없어서 아두이노랑 2004 I2C LCD로 장식을 한 번 만들어보기로 했습니다.
준비물
- 2004 I2C LCD 디스플레이 모듈
- 아두이노 Uno
- 점퍼 케이블 (M-F로 준비하면 편합니다.)
- https://github.com/johnrickman/LiquidCrystal_I2C 사이트 들어가서 라이브러리 다운 받기 (I2C LCD 모듈을 제어하기 위해 필요한 LiquidCrystal_I2C 라이브러리)
연결 방법
- GND: 아두이노의 GND에 연결
- VCC: 아두이노의 5V에 연결
- SDA: 아두이노의 A4 핀에 연결 (I2C 데이터)
- SCL: 아두이노의 A5핀에 연결 (I2C 클럭)
- 자세한 설명은 https://kocoafab.cc/tutorial/view/727 설명이 잘되어 있으니, 저는 제작 과정을 쓰겠습니다.
과정
디스플레이는 일단 좀 많은 텍스트를 써보고 싶기도 했고, 큰 게 좋으니까 기본 실습용보다 큰 걸로 준비했습니다. 사실 더 클 줄 알았는데 아쉽긴 합니다. 다음엔 더 큰 걸 사봐야하나... 아무튼 2004 I2C LCD와 아두이노 우노 호환보드, 그리고 점퍼케이블 (M-F), 그리고 연결할 usb가 있으면 준비는 끝납니다. 점퍼케이블은 M-F가 많으면 편합니다. 그러고 보면 이름이 참 직관적이긴 하네요.
연결을 하면 다음과 같이 완성됩니다.
이제 코드를 작성해서 글자를 써보겠습니다.
엄... 뭐랄까 화면이 너무 밝아서 글자가 안보입니다. 뒤에 있는 저항을 조절해 글자를 선명하게 해줍시다. 그리고 한글은 작성이 안되더라고요. 한글 쓰면 2번째줄처럼 깨져서 나오게 됩니다. 코드는 맨 아래에 적어두겠습니다.
저는 집에 드라이버가 없어서 칼로 돌렸습니다. 위험하니까 드라이버는 하나씩 구비하도록 해야겠습니다. 3D 프린터랑 공구세트랑... 살 게 많은 나날입니다. 컴퓨터 하드 용량도 늘려야할 거 같은데.. 다음에 돈 들어오면 또 금방 빠져나갈 거 같습니다. 아무튼 돌려주면 화면이 선명해지는 걸 확인할 수 있습니다.
이제 뭘 적을지만 생각하면 됩니다. 막상 영어로 적으려니 노래 가사밖에 안떠올라 당황스러웠습니다. 호날두 인터뷰 내용 적어놓으려고 했는데 칸이 모자라서 깨지는 현상을 발견했습니다. 그래서 그냥 제가 항상 생각하는 말들을 적었습니다.
Do or die는 사실 노래가사에서 따온 게 맞습니다. Welcome to the black parade 노래에서 따왔고, Run and run은 제가 존경하는 분이 하신 말씀이라 가져왔습니다. 제 인생 모토로 삼으려고요. 어쩌다보니 가훈으로 바뀌었는데, 크리스마스 에디션도 준비해봤습니다.
크리스마스 에디션
우선 .으로 눈 내리는 걸 표현해보고 싶었는데 좀 부족해 보여서 썰매를 타는 산타로 선회했습니다. 영상을 업로드하고 싶은데 지금 오류가 나서 수정하도록 하겠습니다.
영상을 가지고 왔습니다.
이게 딱봐도 느껴지는 게 눈 내리는 게 좀 엉성해 보이지 않나요? 그래서 썰매를 타고 있는 산타를 그려보고자 했습니다. 그래서 완성된 게 다음 사진입니다.
영상도 있습니다.
3줄로 표현하는 게 아무래도 한계가 있다보니까 이게 최선이었습니다. 다른 금손들은 어떠실지 모르겠네요. 저는 일단 디자인 부문에서는 꽝이라서 이걸로 만족했습니다.
마무리
아무튼 크리스마스 에디션까지 만들어 봤는데... 아직 크게 다가오는 건 없어서 일단 가훈으로 바꿔놨습니다. 비어있던 침대 칸을 활용해서 좋네요. 디스플레이 외곽을 둘러쌀 곽도 디자인하면 재밌을 거 같은데 지금 노트북에 캐드 깔면 진짜 바로 용량초과될 거 같아서 돈 들어오면 디자인 하렵니다. 날 것 그대로 있는 게 더 멋있어 보이기도 하고요. 사실 간단한 건 사서 쓰는 게 더 싸게 치기도 합니다. 커스터마이징만 빼면 말이죠. 그래서 예뻐 보이는 통 있으면 거기 넣겠습니다. 톱질은 필요하겠지만요. 다음엔 뭘 만들까 고민했는데, 일단 집에 필요한 거부터 만들어 보려고요. 창문 자동으로 개폐해주는 장치라거나. 전동킥보드도 병행해서 만들어보겠습니다. 더 재밌는 거 만들어오겠습니다.
코드
다들 아시겠지만, 아두이노 IDE를 다운받고 거기에 복붙하면 됩니다. 보드랑 포트 꼭 선택해주시고요. 저는 여기서 한 번 헤맸었습니다.
산타와 루돌프 코드
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4); // LCD 주소 및 크기 설정 (0x27 또는 0x3F)
void setup() {
lcd.init();
lcd.backlight();
lcd.clear();
// "Merry Christmas!" 메시지를 마지막 줄에 표시
lcd.setCursor(2, 3);
lcd.print("Merry Christmas!");
// 산타와 루돌프를 초기 위치에 표시
displaySantaAndRudolph(0); // 초기 위치에서 산타와 루돌프 표시
}
void loop() {
// 산타와 루돌프 애니메이션
for (int pos = 0; pos < 14; pos++) { // 화면 오른쪽 끝까지 이동
lcd.clear();
// "Merry Christmas!" 메시지를 마지막 줄에 유지
lcd.setCursor(2, 3);
lcd.print("Merry Christmas!");
// 이동한 위치에 산타와 루돌프 표시
displaySantaAndRudolph(pos);
delay(500); // 이동 속도 조절
}
}
// 산타와 루돌프를 표시하는 함수
void displaySantaAndRudolph(int offset) {
// 산타 묘사 (첫 번째 줄)
lcd.setCursor(offset, 0);
lcd.print(" . . ");
lcd.setCursor(offset, 1);
lcd.print("..O.."); // 머리 및 얼굴
lcd.setCursor(offset, 2);
lcd.print(".[ ]..."); // 썰매 부분
// 루돌프 묘사 (산타의 오른쪽)
lcd.setCursor(offset + 7, 1);
lcd.print(".."); // 루돌프 얼굴
lcd.setCursor(offset + 7, 2);
lcd.print(".\\|/"); // 몸통과 다리
}
기본 글씨 코드
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// LCD 주소 설정 (일반적으로 0x27이나 0x3F을 사용합니다)
// LCD 주소가 다르면 I2C 스캐너로 주소를 확인해야 합니다.
LiquidCrystal_I2C lcd(0x27, 20, 4); // 0x27 주소, 20x4 LCD 모듈 설정
void setup() {
lcd.init(); // LCD 초기화
lcd.backlight(); // 백라이트 켜기
lcd.setCursor(5, 1); // 첫 번째 줄, 첫 번째 칸에 커서 설정
lcd.print("Do or Die"); // 글자 출력
lcd.setCursor(4, 2); // 두 번째 줄, 첫 번째 칸
lcd.print("Run and Run"); // 글자 출력
}
void loop() {
// loop 함수는 현재 필요 없음
}
'가내공업' 카테고리의 다른 글
[가내공업] MH-SR602로 간이 보안시스템 만들기 1편 (3) | 2024.11.13 |
---|