12. LCD를 이용한 탁상시계 만들기

Download Report

Transcript 12. LCD를 이용한 탁상시계 만들기

LCD를 활용한 탁상 시계 만들기
목차
1.
재료준비 및 브레드 보드 배선 구성하기
2.
LCD를 활용한 탁상 시계 만들기
3.
응용 작품 만들기
1
준비물
준비하기
1) 아두이노 보드 (SPL-Duino V2 초보자용 보드)
2) USB 케이블
3) 서보 모터, PSD 거리 센서
4) 브레드보드 실습 키트
2
브레드보드 배선 구성하기
전원 연결
아래 그림과 같이 브레드 보드를 연결해줍니다.
3
브레드보드 배선 구성하기
센서 연결
LCD모듈과 아날로그 키패드를 연결해줍니다.
4
다중 for문 이해하기
다중 for 반복
다중 for 반복문이란?
- for문 안에 for문을 더 넣는 방법
- for문 안에 다른 for문이 존재함으로써 조건이 하나 더 생김
일반적인 for문
다중 for 반복문
for(i=0; i<=10; i++)
{
for(i=0; i<=10; i++)
{
for( j=0; j<=10; j++)
{
}
}
}
5
다중 for문 이해하기
다중 for 반복
명령문_1;
for(i=0; i<=10; i++)
{
명령문_2;
for( j=0; j<=10; j++)
{
명령문_3;
}
명령문_4;
}
명령문_5;
명령문_1을 실행하고
첫 번째 for문에 들어갑니다.
명령문_2를 실행하고
두 번째 for문에 들어갑니다.
두 번째 반복문을 실행하여
명령문_3가 반복됩니다.
j의 조건이 끝나면
명령문_4를 실행합니다.
명령문_4가 실행한
첫 번째 for문의 조
만족 할 때까지 반
두 번째 for문은 첫
반복문 만큼 실행
모든 for문이 끝나
명령문_5가 실행됩
6
다중 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의
움직임을 확인하여 봅니다.
7
다중 for문 이해하기
다중 for 반복
for(i=0; i<=10; i++)
{
}
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의 진행
단순 for문은 선, 2중 for문은 면, 3중 for문은 입체로 다중 for문은 늘어날 수록
8
차원이 늘어납니다.
기본 실습
탁상 시계
LCD 모듈을 이용하여 LCD모듈에 시계를 표현합니다.
시계의 조건
- 시계는 시, 분, 초를 가지고 있습니다.
- 초가 60이 되면 초는 다시 0이 되고 분이 1 카운트 됩니다.
- 분이 60이 되면 분은 다시 0이 되고 시가 1 카운트 됩니다.
- 시는 24가 되면 다시 0이 됩니다.
- delay(1000)은 1초
9
기본 실습
탁상 시계
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
lcd.begin();
lcd.clear();
Serial.begin(57600);
}
lcd를 이용을 위한 기본 세팅을 해줍니다.
10
기본 실습
탁상 시계
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.print(":");
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();를 이용하여
시분초의 위치를 정해줍니다.
11
기본 실습
탁상 시계
#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.clear();
lcd.print(h);
lcd.setCursor(2,0);
12
응용 작품 만들기
실습
• 미션) 키패드 센서를 이용하여 시간을 수정 할 수 있는 장치를 만드십시
오.
시간 수정
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()
14