전체상품목록 바로가기

본문 바로가기



현재 위치

  1. 게시판
  2. 코딩교실

아두이노 7세그먼트를 이용한 시계조명
subject 아두이노 7세그먼트를 이용한 시계조명
writer 대표 관리자 (ip:)
  • date 2016-08-31 17:15:56
  • recom 추천 하기
  • hit 357
  • point 0점

시계조명

준비물

4-digit

7-Segment FND

조도 센서

LED

스위치

점프선

아두이노

우노 보드

1

1

1

1

21

1

 

작품설명

4-digit 7-segemt FND로 시계를 표시하며, 스위치 버튼을 이용하여 현재 시간을 설정한다.

조도 센서와 LED를 연결하여 조도에 따라 스탠드가 자동으로 on/off 되도록 한다.


 

*4-digit 7-Segment FND 모듈

* 7-Segment FND (Flexible Numeric Display) 세그먼트란?

 7개의 LED를 이용하여 숫자를 만들어내는 디스플레이

7 Segment 4자리의 표시(7 Segment 4 Digit Module)를 할 수 있는 LED모듈이다. (.)까지 포함해서 8 Segment이다.

핀은 12개를 가지고 있다

 

 




 

* Digit를 표시하기 위한 LED 램프 구성은 다음과 같다.

           

* 12개의 배열은 다음과 같다.

* 12,9,8,6핀은 Digit 1~4를 컨트롤 하며 나머지 핀은

SegmentLOW/HIGH를 통해 숫자/문자를 나타내는 역할을 한다.

* 아두이노 우노와의 연결은 다음과 같다.

Arduino Pin

LED Display Pin

Segment

Digital 6

11

A

Digital 7

7

B

Digital 8

4

C

Digital 9

2

D

Digital 10

1

E

Digital 11

10

F

Digital 12

5

G

Digital 13

3

DP

 

 

 


 

회로도


스코드

/*

 *  Code by ThinkCoding

 */

#include <SevSeg.h>

 

#include "SevSeg.h"

unsigned int bun, si;

unsigned long time;

int sw1,sw2,sw3;

 

#define LED_PIN A2                        // * LED

SevSeg sevseg;

 

void setup(){

  Serial.begin(9600);

  sevseg.Begin(0,2,3,4,5,6,7,8,9,10,11,12,13);   // FND 핀 초기화

  pinMode(A0,INPUT);          // switch 입력핀  초기화

  pinMode(A1,INPUT);          // 조도 센서 입력핀 초기화

  pinMode(LED_PIN,OUTPUT);    // LED 출력핀 초기화

 

  digitalWrite(LED_PIN,LOW);  // LED off

}

 

 

void loop(){

   // 작동 시간을 구한다.

   time = millis() / 1000;

  // 분 계산

  if(time%60==0 && sw1==0){

    bun++;

    sw1=1;    // 초를 이용해서 분을 늘리는 플래그

  }

  if(time%60!= 0) sw1=0;

 

  // 시 계산

  if(bun==60 && sw2==0){

    si++;

    bun=0;

    sw2=1;    // 분을 이용해서 시를 늘리는 플래그

  }

  if(bun!=60) sw2=0;

 

  // 24시간까지만 표시하기 위해 초기화

  if(si == 24 && sw3==0){

    si=0;

    bun=0;

    time =0;

    sw3=1;

  }

  if(si!=24) sw3=0;

 

  char incoming[9] = {};

  memset(incoming, 0, sizeof(incoming));

 

  if(si == 0)

   sprintf(incoming, "%d", bun); 

  else if(bun < 10 )

    sprintf(incoming, "%d0%d", si, bun); 

  else

    sprintf(incoming, "%d%d", si, bun);

 

   int curtime = atof(incoming); 

     

   sevseg.NewNum(curtime,2);

 

  // Display number

  sevseg.PrintOutput(); 

 

  //1. 스위치를 통해 시간을 설정한다.

  if(digitalRead(A0)==LOW && millis()%10==0) bun++;

 

  //2.조도 센스 값에 따라 LED 등을 켠다. 

  int brightness = analogRead(A1);  

 

  Serial.print("brightness===>");

  Serial.println(brightness);

 

  //어두워지면 값이 커진다 평상시 4

  if(brightness <= 100)

  {

      digitalWrite(LED_PIN, HIGH); 

  }

   else

   {

      digitalWrite(LED_PIN, LOW); 

   }

}

동영상

 

문의처

다두이노와 딩코가 함께하는 코딩스쿨

교육문의: daduino@daduino.co.kr

file 시계조명사진.png
password * 삭제하려면 비밀번호를 입력하시고 엔터키를 눌러주세요.
목록 삭제 수정 답변
댓글 수정

password

수정 취소

/ byte

reply

댓글 입력

name password 관리자답변보기

확인

/ byte

* 왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

회원에게만 댓글 작성 권한이 있습니다.


이전 제품

다음 제품