아두이노, LCD(16X2 I2C), 1sheeld로 디지털시계 만들기

#아두이노 #arduino #lcd #I2C #1602 #시계 #만들기 #digital #clock #maker #메이커오랜만에 아두이노를 켰다. 오랜만에 만지면 기본적인 것도 다 잊어버리고 아두이노 예제 문제를 보면서 감각을 느꼈다.

버튼을 누르면 led가 켜지는 간단한 구조다. 오늘은 아두이노 중 LCD(liquid crystal display)를 다뤄보자. 내가 사용한 lcd는 다음과 같다.

16×2 Character LCD with I2C Interface Adapter 기본 lcd를 사용하면 코드가 복잡해지고 접속도 번거로워지는데, 이를 사용하면 코드도 간결해지고 선도 4개만 연결하여 사용할 수 있다. 열여섯자씩두줄을사용하는것이. 특수문자(하트 등)나 한글을 사용하면 깨져서 나온다.Liquid Crystal_I2 Clcd(0x3F,16,2); 이 lcd를 사용하려면 위 코드에서 밑줄 친 부분에 들어갈 주소가 필요하다. 주소를 특정할 수 있는 i2cscanner 코드는 GitHub와 같은 곳에서 많이 오픈하여 쉽게 구할 수 있다.

코드를 실행하고 툴 시리얼 모니터를 클릭하면 위와 같은 화면이 나타난다.내 제품 주소는 0x3F야. 이제 코드를 입력해보자.

ようこそ (2초) -> SY Insight! 😀 (30초) -> clear (3초) -> Welcome to… (복반) 조는 구하

#include <LiquidCrystal_I2Cを含む。h>/* 16글자와 2라인 디스플레이의 LCD 주소를 설정합니다. */액정_I2Clcd(0x3F, 16, 2); void setup() {cd.begin();} void loop() {lcd.set Cursor(0,0); lcd.print(“Welcome to”); lcd.print(“2000); lcd.set Cursor(1,1); lcd.print(“SYINSUSY!:Day;”)

#include <LiquidCrystal_I2Cを含む。h>/* 16글자와 2라인 디스플레이의 LCD 주소를 설정합니다. */액정_I2Clcd(0x3F, 16, 2); void setup() {cd.begin();} void loop() {lcd.set Cursor(0,0); lcd.print(“Welcome to”); lcd.print(“2000); lcd.set Cursor(1,1); lcd.print(“SYINSUSY!:Day;”)

<1 sheeld를 이용한 디지털 시계 만들기_Arduino Digital Clock Using 1 Sheeld> 1 sheeld는 휴대폰에 탑재되어 있는 여러 센서를 아두이노와 함께 이용할 수 있도록 지원하는 보드이다. 이 보드 하나로 블루투스 모듈도 없어도 되고 각종 센서나 sns, 카메라, 버저, face detection, GLCD, GPS, Gravity 등 편리하게 사용할 수 있어 애용하고 있다. 이번에 만든 디지털 시계도 코드 몇 줄로도 손쉽게 시간을 동기화할 수 있어 편리하다.https://www.instructables.com/id/Arduino-Digital-Clock-Using-1Sheeld/Arduino 디지털 시계 1Sheld Arduino 디지털 시계 1Sheld: 만약 제가 당신에게 물어본다면, 10시 30분이 되면 불을 꺼주실 수 있나요?사실 일반적인 대답은 스마트폰을 체크해서 10시 30분까지 불을 끄라고 핸드폰에 알려주는 것입니다.음, 그건 보통 사람이라면 누구나 OK입니다만… www.instructables.comArduino 디지털 시계 1Sheld Arduino 디지털 시계 1Sheld: 만약 제가 당신에게 물어본다면, 10시 30분이 되면 불을 꺼주실 수 있나요?사실 일반적인 대답은 스마트폰을 체크해서 10시 30분까지 불을 끄라고 핸드폰에 알려주는 것입니다.음, 그건 보통 사람이라면 누구나 OK입니다만… www.instructables.com제조사 사이트의 instructable을 찾아다니며 쉽게 따라할 수 있는 좋은 원쉴드 예제를 찾아 따라해 보았다. 여러 메이커 사이트가 있는데 이 사이트도 정말 좋아. 이 사람의 예는 기본 lcd를 사용했기 때문에 I2C용으로 수정했다.#define CUSTOM_SETTINGS#define INCLUDE_CLOCK_SHIELD/*1Sheld라이브러리를 포함한다.*/#는<OneSheld>를 포함합니다.h>/*LCD라이브러리를 포함하는**/#include<LiquidCrystal_I2C.h>*당일을 위한 변수를 몇개 지정합니다.*/int hour, minute, second;//인터페이스 핀 번호로 LCD라이브러리를 초기화합니다.LicidCrystal_I2C lcd(0x3F, 16,2);setup(){/*통신을 시작하지 않습니다.*/OneSheld.begin();/*클록 실드를 기동합니다.*/시계.queryDateAndTime();/*LCD의 렬수으로 줄수를 설정하는*/lcd.begin();/*이 행을 LCD*/lcd.print(” 즐거운 하루 되세요”;}void loop(){/*항상 시간을 버세요.*/hour=Clock.getHours();minute=Clock.getMinutes();second=Clock.getSeconds();/*커서를 컬럼 0, 행 1*/lcd.setCursor(0, 1);/*현재의 시각을 인쇄*/lcd.print(hour);lcd.print(hour);lcd.print(minute);lcd.print(minute:”);/*2번째 시각을 인쇄합니다.print(second);/*초가”59″에 이르자 다시”00″은 아니다”0″로 시작되므로 전”59″의 “9”은 혼란을 일으킨다*//*초가 경과한 뒤에도*/if(second==59){delay(100);/*커서를 2행째 선두로 이동합니다*/lcd.set Cursor(0,1);/*루프 하고 2행째 16곳 모두*/를 지웁니다(inti=0;i<16;i++){/*”print empty spaces”을 클리어 하면 새로운*/lcd.print()”;}}}}#define CUSTOM_SETTINGS#define INCLUDE_CLOCK_SHIELD/*1Sheld라이브러리를 포함한다.*/#는<OneSheld>를 포함합니다.h>/*LCD라이브러리를 포함하는**/#include<LiquidCrystal_I2C.h>*당일을 위한 변수를 몇개 지정합니다.*/int hour, minute, second;//인터페이스 핀 번호로 LCD라이브러리를 초기화합니다.LicidCrystal_I2C lcd(0x3F, 16,2);setup(){/*통신을 시작하지 않습니다.*/OneSheld.begin();/*클록 실드를 기동합니다.*/시계.queryDateAndTime();/*LCD의 렬수으로 줄수를 설정하는*/lcd.begin();/*이 행을 LCD*/lcd.print(” 즐거운 하루 되세요”;}void loop(){/*항상 시간을 버세요.*/hour=Clock.getHours();minute=Clock.getMinutes();second=Clock.getSeconds();/*커서를 컬럼 0, 행 1*/lcd.setCursor(0, 1);/*현재의 시각을 인쇄*/lcd.print(hour);lcd.print(hour);lcd.print(minute);lcd.print(minute:”);/*2번째 시각을 인쇄합니다.print(second);/*초가”59″에 이르자 다시”00″은 아니다”0″로 시작되므로 전”59″의 “9”은 혼란을 일으킨다*//*초가 경과한 뒤에도*/if(second==59){delay(100);/*커서를 2행째 선두로 이동합니다*/lcd.set Cursor(0,1);/*루프 하고 2행째 16곳 모두*/를 지웁니다(inti=0;i<16;i++){/*”print empty spaces”을 클리어 하면 새로운*/lcd.print()”;}}}}처음에는 0:0:0이 나와서 왜 그럴까 했는데 ‘second’가 60초가 되고 ‘minute’가 업로드 되고, minute가 60분이 되면서 시간이 업로드 됐다.처음에는 0:0:0이 나와서 왜 그럴까 했는데 ‘second’가 60초가 되고 ‘minute’가 업로드 되고, minute가 60분이 되면서 시간이 업로드 됐다.처음에는 0:0:0이 나와서 왜 그럴까 했는데 ‘second’가 60초가 되고 ‘minute’가 업로드 되고, minute가 60분이 되면서 시간이 업로드 됐다.내 휴대전화에 있는 시간과 동기화하고 있어. 60초가 될 때 업로드 되는 게 아니라 처음부터 시:분:초가 업로드되는 방법은 없을까?