LCD를 활용한 탁상 시계 만들기 재료준비 및 브레드 보드 배선 구성하기 LCD를 활용한 탁상 시계 만들기 응용 작품 만들기 목차 재료준비 및 브레드 보드 배선 구성하기 LCD를 활용한 탁상 시계 만들기 응용 작품 만들기
준비물 준비하기 아두이노 보드 (SPL-Duino V2 초보자용 보드) USB 케이블 서보 모터, PSD 거리 센서 브레드보드 실습 키트
브레드보드 배선 구성하기 전원 연결 아래 그림과 같이 브레드 보드를 연결해줍니다.
브레드보드 배선 구성하기 센서 연결 LCD모듈과 아날로그 키패드를 연결해줍니다.
다중 for문 이해하기 다중 for 반복문이란? for(i=0; i<=10; i++) { } for(j=0; j<=10; j++) }
다중 for문 이해하기 명령문_1; for(i=0; i<=10; i++) { 명령문_2; for(j=0; j<=10; j++) 명령문_3; } 명령문_4; 명령문_5; 명령문_1을 실행하고 첫 번째 for문에 들어갑니다. 명령문_2를 실행하고 두 번째 for문에 들어갑니다. 명령문_4가 실행한 뒤 첫 번째 for문의 조건이 만족 할 때까지 반복합니다. 두 번째 for문은 첫 번째 반복문 만큼 실행됩니다. 모든 for문이 끝나면 명령문_5가 실행됩니다. 두 번째 반복문을 실행하여 명령문_3가 반복됩니다. j의 조건이 끝나면 명령문_4를 실행합니다.
다중 for문 이해하기 다중 for 반복 void setup() { Serial.begin(57600); } void loop() for (int i = 1;i <= 10;i=i+1) Serial.print("i="); Serial.println(i); for (int j = 1;j <= 10;j=j+1) Serial.print("j="); Serial.println(j); delay(300); 좌측 소스를 실행하여 i와 j의 움직임을 확인하여 봅니다.
다중 for문 이해하기 다중 for 반복 for(i=0; i<=10; i++) { } for(j=0; j<=10; j++) } for(i=0; i<=10; i++) { for(j=0; j<=10; j++) for(k=0; k<=10; k++) } k의 진행 j의 진행 i의 진행 i의 진행 j의 진행 i의 진행 단순 for문은 선, 2중 for문은 면, 3중 for문은 입체로 다중 for문은 늘어날 수록 차원이 늘어납니다.
기본 실습 탁상 시계 LCD 모듈을 이용하여 LCD모듈에 시계를 표현합니다. 시계의 조건 - 시계는 시, 분, 초를 가지고 있습니다. - 초가 60이 되면 초는 다시 0이 되고 분이 1 카운트 됩니다. - 분이 60이 되면 분은 다시 0이 되고 시가 1 카운트 됩니다. - 시는 24가 되면 다시 0이 됩니다. - delay(1000)은 1초
기본 실습 탁상 시계 #include <Wire.h> lcd를 이용을 위한 기본 세팅을 해줍니다. #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.begin(); lcd.clear(); Serial.begin(57600); } lcd를 이용을 위한 기본 세팅을 해줍니다.
기본 실습 탁상 시계 void loop() { for (int h= 0; h <24; h++) for (int m = 0; m < 60; m++) for (int s = 0; s < 60; s++) lcd.clear(); lcd.print(h); lcd.setCursor(2,0); lcd.print(":"); lcd.setCursor(3,0); lcd.print(m); lcd.setCursor(5,0); lcd.setCursor(6,0); lcd.print(s); delay(1000); } 3중 for 반복문을 사용하여 줍니다. 첫 번째 for문은 시(hour)로 표현하고 초기값과 조건값을 맞춰 줍니다. 두 번째 for문은 분(minute)입니다. 마찬가지로 초기값과 조건값을 입력합니다. 세 번째 for문은 초(second)입니다. 초기값과 조건값을 수정하여 줍니다. 그리고 세 번째 for문에서부터 lcd명령어를 사용하여 줍니다. 반복문은 계속 갱신되기에 lcd.clear();를 이용하고 for문의 변수들이 시간을 표현하기에 입력 lcd.print();와 lcd.setCursor();를 이용하여 시분초의 위치를 정해줍니다.
기본 실습 탁상 시계 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.begin(); lcd.clear(); Serial.begin(57600); } void loop() for (int h= 0; h <24; h++) for (int m = 0; m < 60; m++) for (int s = 0; s < 60; s++) lcd.print(h); lcd.setCursor(2,0); lcd.print(":"); lcd.setCursor(3,0); lcd.print(m); lcd.setCursor(5,0); lcd.setCursor(6,0); lcd.print(s); delay(1000);
응용 작품 만들기 미션) 키패드 센서를 이용하여 시간을 수정 할 수 있는 장치를 만드십시오. 실습 시간 수정 1버튼 : 시간 수정 2,3버튼 : 좌우로 움직여 시분초를 선택 4,5버튼 : 시분초의 숫자를 수정
응용 작품 만들기 코드 예시 실습 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); int green = 722; int blue = 661; int white = 900; int yellow = 797; int red = 609; int mv=1; int cnt=0; void setup() { lcd.begin(); lcd.clear(); Serial.begin(57600); } void loop() for (int h= 0; h <24; h++) for (int m = 0; m < 60; m++) for (int s = 0; s < 60; s++) cnt=0; lcd.print(h); lcd.setCursor(2,0); lcd.print(":"); lcd.setCursor(3,0); lcd.print(m); lcd.setCursor(5,0); lcd.setCursor(6,0); lcd.print(s); delay(1000); int a0 = analogRead(0); Serial.println(a0); while(a0==white & cnt ==0) while (cnt == 0) int b0 = analogRead(0); Serial.println(b0); lcd.setCursor(mv,0); lcd.blink(); delay(300); lcd.setCursor(0,0); a0 = analogRead(0); if (a0==green) if (mv == 1) h++; else if (mv == 4) m++; else if (mv == 7) s++; if (h>23) h=0; if (s>59) s=0; if (m>59) m=0; else if (a0==red) h--; m--; s--; if (h < 0) h = 23; if (m < 0) m = 59; if (s < 0) s=59; else if (a0==yellow) mv=mv-3; if (mv <1) mv=1; else if (a0==blue) mv=mv+3; if (mv >7) mv=7; else if (a0==white) lcd.noBlink(); cnt = 1;