산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

스파크펀 7-세그먼트 디스플레이로 신뢰할 수 있는 아두이노 카운트다운 타이머 만들기

부품 및 소모품

부품 수량
브레드보드 (일반) 1
점퍼 와이어 (일반) 1
스파크펀 7-세그먼트 시리얼 디스플레이 - 레드 (브레이크아웃 보드 미사용) 1
USB-A to 미니 USB 케이블 1
아두이노 메가 2560 1

앱 및 온라인 서비스

프로젝트 개요

이 프로젝트는 수중에 타이머가 없어서 직접 만들게 되었습니다. 아두이노(어떤 종류든 상관없음)에 코드를 업로드하면 카운트다운이 자동으로 시작됩니다. 총 시간을 변경하려면 코드의 다음 부분을 수정하세요.

long n = 60000; // 시작 시간(밀리초) - 원하는 시간으로 변경 가능

중요: 1000 = 1초입니다. 따라서 60000 = 60초이며, 공식 (초 × 1000)을 사용해 밀리초 단위 값을 구해 60000 자리에 넣으면 됩니다. 리셋 버튼을 누르면 카운터가 자동으로 재시작합니다.

코드

아래 코드를 아두이노에 업로드하여 카운트다운 타이머를 실행하세요. 7-세그먼트 디스플레이 핀 연결은 주석을 참조하십시오.

// 7-세그먼트 핀 번호 - 7-세그먼트 라이트 - 아두이노 핀 번호
// pin 11 - A = 12
// pin 7  - B = 10
// pin 4  - C = 8
// pin 2  - D = 7
// pin 1  - E = 6
// pin 10 - F = 11
// pin 5  - G = 9
// pin 3  - 소수점

const int a = 12;
const int b = 10;
const int c = 8;
const int d = 7;
const int e = 6;
const int f = 11;
const int g = 9;
int p = 0;
int startStopReset = 13;
const int d1 = 1;
const int d2 = 2;
const int d3 = 3;
const int d4 = 4;
long n = 60000; // 시작 시간 - 원하는 시간으로 변경
int x = 100;
int del = 55; // 지연 값

void setup() {
  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  pinMode(d3, OUTPUT);
  pinMode(d4, OUTPUT);
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(p, OUTPUT);
  pinMode(startStopReset, INPUT);
  digitalWrite(startStopReset, HIGH);
}

void loop() {
  digitalWrite(p, HIGH);
  clearLEDs();
  pickDigit(1);
  pickNumber((n / x / 1000) % 10);
  delayMicroseconds(del);
  clearLEDs();
  pickDigit(2);
  pickNumber((n / x / 100) % 10);
  delayMicroseconds(del);
  clearLEDs();
  pickDigit(3);
  dispDec(3);
  pickNumber((n / x / 10) % 10);
  delayMicroseconds(del);
  clearLEDs();
  pickDigit(4);
  pickNumber(n / x % 10);
  delayMicroseconds(del);
  n--; // 'n++'로 변경 시 스톱워치 모드
  if (digitalRead(13) == LOW) {
    n = 60000; // 재시작 시간 - 원래 설정한 시간으로 변경
  }
}

void pickDigit(int x) { // 자릿수 선택
  digitalWrite(d1, HIGH);
  digitalWrite(d2, HIGH);
  digitalWrite(d3, HIGH);
  digitalWrite(d4, HIGH);
  switch (x) {
    case 1: digitalWrite(d1, LOW); break;
    case 2: digitalWrite(d2, LOW); break;
    case 3: digitalWrite(d3, LOW); digitalWrite(p, HIGH); break;
    default: digitalWrite(d4, LOW); break;
  }
}

void pickNumber(int x) { // 숫자 표시
  switch (x) {
    default: zero(); break;
    case 1: one(); break;
    case 2: two(); break;
    case 3: three(); break;
    case 4: four(); break;
    case 5: five(); break;
    case 6: six(); break;
    case 7: seven(); break;
    case 8: eight(); break;
    case 9: nine(); break;
  }
}

void dispDec(int x) { digitalWrite(p, LOW); }

void clearLEDs() {
  digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW);
  digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW);
  digitalWrite(g, LOW); digitalWrite(p, LOW);
}

// 0~9 세그먼트 패턴 함수들 (zero() ~ nine())
void zero()  { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); }
void one()   { digitalWrite(a, LOW);  digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW);  digitalWrite(e, LOW);  digitalWrite(f, LOW);  digitalWrite(g, LOW); }
void two()   { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, LOW);  digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, LOW);  digitalWrite(g, HIGH); }
void three() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW);  digitalWrite(f, LOW);  digitalWrite(g, HIGH); }
void four()  { digitalWrite(a, LOW);  digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW);  digitalWrite(e, LOW);  digitalWrite(f, HIGH); digitalWrite(g, HIGH); }
void five()  { digitalWrite(a, HIGH); digitalWrite(b, LOW);  digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW);  digitalWrite(f, HIGH); digitalWrite(g, HIGH); }
void six()   { digitalWrite(a, HIGH); digitalWrite(b, LOW);  digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); }
void seven() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW);  digitalWrite(e, LOW);  digitalWrite(f, LOW);  digitalWrite(g, LOW); }
void eight() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); }
void nine()  { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW);  digitalWrite(f, HIGH); digitalWrite(g, HIGH); }

회로도

아래 연결도를 참고하여 4자리 7-세그먼트 디스플레이를 아두이노에 연결하세요.

스파크펀 7-세그먼트 디스플레이로 신뢰할 수 있는 아두이노 카운트다운 타이머 만들기

제조공정

  1. 아두이노로 모니터 앰비라이트(Ambilight) 시스템 직접 만들기
  2. 아두이노 우노와 OLED 디스플레이로 클래식 퐁(Pong) 게임 만들기: 단계별 튜토리얼
  3. 아두이노 오디오 주파수 감지기 - 고감도 사운드 모듈로 최대 음량 피크 주파수 측정
  4. 직접 만드는 아두이노 다마고치: 디지털 펫 DIY 프로젝트
  5. 스마트 무선 조명 스위치 컨트롤러: 아두이노 기반 원격 스위치 조작기
  6. 아두이노 틱택토 게임 - MAX7219 LED 매트릭스와 골판지 케이스
  7. 아두이노 나노로 만든 스마트 모션 감지 물총
  8. 아두이노 손 씻기 타이머: 코로나19 예방을 위한 간단한 DIY 도구
  9. 아두이노 해바라기: 태양을 추적하는 전자 해바라기 만들기
  10. 아두이노로 직접 만드는 RC 포르쉐 자동차: 단계별 가이드