제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 15 | ||||
| × | 15 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 190 | ||||
| × | 10 | ||||
| × | 12 | ||||
| × | 4 | ||||
| × | 1 |
| ||||
| ||||
|
먼저 다음 라이브러리를 다운로드해야 합니다(링크는 이 페이지 끝에 제공됨) 1. 와이어.h
2. RTClib.h부품 목록
동영상 보기
RTC 시계 모듈입니다.
이것은 Arduino 회로입니다.
RTC 배선 연결
RTC 스위치
양극 및 음극 식별
회로도(공통 양극)
그림> 그림>
공통 음극 LED를 사용하는 경우 다음과 같이 변경하십시오.
그림> 그림> 그림>
전원 공급 장치
그림> 그림> 그림> 그림>
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">
/* 4자리 7세그먼트 디스플레이:http://www.sparkfun.com/products/9483 데이터시트:http://www.sparkfun.com/datasheets/Components/LED/ 7-Segment/YSD-439AR6B-35.pdf */// http://nicuflorica.blogspot.com// 데이터 시트에서 niq_ro에 의해 수정된 연결:http://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298Kea2655 -563XSA.pdf// BMIAK Basnayaka에 의해 수정된 코드// http://www.setnfix.comint digit1 =11; 정수 숫자2 =10; 정수 숫자3 =9; 정수 4 =6; 정수 5 =5; 정수 6 =3; //필요한 경우 Arduino에서 ATmega DIP28로 핀 매핑//http://www.arduino.cc/en/Hacking/PinMappingint segA =0; //디스플레이 핀 11int segB =1; //디스플레이 핀 7int segC =2; //디스플레이 핀 4int segD =4; //디스플레이 핀 2int segE =7; //디스플레이 핀 1int segF =8; //디스플레이 핀 10int segG =12; //디스플레이 핀 5int segDP =13; // 디스플레이 핀 3#include섹션>#include "RTClib.h"RTC_DS1307 RTC;// I2C 및 Wire lib// http://learn.adafruit의 원래 sketck를 통해 연결된 DS1307 RTC를 사용하는 날짜 및 시간 기능 .com/ds1307-real-time-clock-breakout-board-kit/// http://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the-에서 SQW=1Hz로 부품 추가 i2c-bus/// 수동 조정으로 부품 추가 http://www.bristolwatch.com/arduino/arduino_ds1307.htmbyte SW0 =A0;byte SW1 =A2;byte SW2 =A1;byte SWT =A3;int Adhr=0; int Admnt=0;int D =0;int Z =0;// 16진수 변환에서 16진수 사용long zh, uh, ore;long zm, um, miniti;void setup() { //Serial.begin(57600); Wire.begin(); RTC.begin(); // RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));// 시계를 설정해야 하는 경우... // 위 라인에서 // 제거 LEDWire.beginTransmission(0x68) 깜박임을 위한 부분 코드;Wire.write(0x07); // 포인터를 SQW 주소로 이동 // Wire.write(0x00); // SQW 핀을 끕니다. Wire.write(0x10); // 0x10(hex) 00010000(binary)을 제어 레지스터로 전송 - 1Hz에서 구형파 켜기// Wire.write(0x13); // 0x13(16진수) 00010011(바이너리) 전송 32kHzWire.endTransmission(); 핀모드(segA, 출력); 핀모드(세그B, 출력); 핀모드(segC, OUTPUT); 핀모드(세그D, 출력); 핀모드(세그, 출력); 핀모드(segF, 출력); 핀모드(세그G, 출력); 핀 모드(segDP, 출력); 핀모드(숫자1, 출력); 핀모드(숫자2, 출력); 핀모드(숫자3, 출력); 핀모드(숫자4, 출력); 핀모드(숫자5, 출력); pinMode(digit6, OUTPUT);//Serial.begin(9600);pinMode(SW0, INPUT); // 아니요. 푸시 버튼 스위치 핀 모드(SW1, INPUT); // 아니요. 푸시 버튼 스위치 핀 모드(SW2, INPUT); // 아니요. 푸시 버튼 스위치 핀 모드(SWT, INPUT); // 아니요. 푸시 버튼 스위치digitalWrite(SW0, HIGH); // 풀업 ondigitalWrite(SW1, HIGH);digitalWrite(SW2, HIGH);digitalWrite(segDP, LOW);}void loop() { DateTime now =RTC.now(); 긴 HR =now.hour()*1000; 긴 시간 =(HR*10)+now.minute()*100+now.second(); Adhr =now.hour(); Admnt=now.minute();int DIM =0;if(팀프>=250000)팀프=팀프-240000;//---------------------- --------------------------------//12/24시간 똥싸기 //--------- -------------------------------------------if (팀프 <130000 ){digitalWrite(segDP, LOW);}if (digitalRead(SWT)==0){지연(300); if (D ==0) { D =1;delay(200);} else{D =0;}}if (D ==0){ if (timp> =130000){timp=timp-120000;digitalWrite( segDP, HIGH);}}if (timp> =130000){ digitalWrite(segDP, LOW);}if ((D==1)&(timp <130000))digitalWrite(segDP, LOW);//--- -------------------------------------------------- - //int timp =(now.minute(), DEC);// displayNumber(12); // 이것은 표시할 숫자입니다. for(int i =100; i>0; i--) { if (timp> =100000) displayNumber01(timp); 그렇지 않으면 displayNumber02(팀프); } for(int i =100; i>0; i--) { if (팀프>=100000) displayNumber03(팀프); 그렇지 않으면 displayNumber04(팀프); } for(int i =100; i>0; i--) { if (팀프>=100000) displayNumber05(팀프); 그렇지 않으면 displayNumber06(팀프); } if (디지털 읽기(SW0)==0){지연(100);Z=1; set_time(); }// 스위치를 눌러 시간을 설정합니다.}void set_time() { byte minutes1 =0; 바이트 시간1 =0; 바이트 분 =0; 바이트 시간 =0; 시간 =Adhr; 분=주의; if ((시간 &0x0f)> 9) 시간 =시간 + 6; if (시간> 0x24) 시간 =1; // Mid night 12.00은 12:00(PM LED 켜짐) 또는 24:00으로 표시됩니다. //if(hours> 0x24) hours =1; // 자정 12:00은 0:00으로 표시됩니다. if ((분 &0x0f)> 9) 분 =분 + 6; if (분> 0x59) 분 =0; while (!(Z==0)){ // 종료하려면 시간 설정 스위치를 놓아야 합니다. int TST =digitalRead(SW2); while (TST==0) // 시간 설정 { hour++; // 16진수를 16진수로 변환:zh =시간 / 16; 어 =시간 - 16 * zh; 광석 =10 * zh + 어; zm =분 / 16; 음 =분 - 16 * zm; 미니티 =10 * zm + 음; if ((시간 &0x0f)> 9) 시간 =시간 + 6; if (시간> 0x24) 시간 =1; // Mid night 12.00은 12:00(PM LED 켜짐) 또는 24:00으로 표시됩니다. //if(hours> 0x24) hours =1; // 자정 12:00은 0:00으로 표시됩니다. if (hours <=9) delay(1); for(int i =400; i>0; i--) { displayNumber01(ore*10000+미니티*100); } TST =디지털 읽기(SW2); } while (!(digitalRead(SW1))) // 분 설정 { minutes++; // 16진수를 16진수로 변환:zh =시간 / 16; 어 =시간 - 16 * zh; 광석 =10 * zh + 어; zm =분 / 16; 음 =분 - 16 * zm; 미니티 =10 * zm + 음; for(int i =400; i>0; i--) { displayNumber01(ore*10000+미니티*100); } if ((분 &0x0f)> 9) 분 =분 + 6; if (분> 0x59) 분 =0; if (분>=9) delay(1); } Wire.beginTransmission(0x68); // DS1307 활성화 Wire.write(0); // 시작 위치 Wire.write(0x00); //초 Wire.write(분); //분 Wire.write(0x80 | 시간); //시간(24시간) Wire.write(0x06); // 01-07일 Wire.write(0x01); // 날짜 0-31 Wire.write(0x05); // 0-12월 Wire.write(0x09); // 00-99년 Wire.write(0x10); // 컨트롤 0x10은 핀 7에서 1HZ 구형파를 생성합니다. Wire.endTransmission(); // 16진수를 16진수로 변환:zh =시간 / 16; 어 =시간 - 16 * zh; 광석 =10 * zh + 어; zm =분 / 16; 음 =분 - 16 * zm; 미니티 =10 * zm + 음; for(int i =400; i>0; i--) { displayNumber01(ore*10000+미니티*100); }지연(100); //Serial.print(digitalRead(SW0));if (digitalRead(SW0)==0) Z =0; 지연(300); }//Serial.print(SW2);}void displayNumber01(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //켜기 짧은 시간 동안의 숫자 switch(digit) { 경우 1:digitalWrite(digit1, DIGIT_ON); 부서지다; 경우 2:digitalWrite(digit2, DIGIT_ON); //digitalWrite(segDP, LOW); 부서지다; 사례 3:digitalWrite(digit3, DIGIT_ON); 부서지다; 경우 4:digitalWrite(digit4, DIGIT_ON); 부서지다; 사례 5:digitalWrite(digit5, DIGIT_ON); 부서지다; 사례 6:digitalWrite(digit6, DIGIT_ON); 부서지다; } lightNumber(디스플레이 % 10); 표시하려면 // 10; 지연 마이크로초(DISPLAY_BRIGHTNESS); //모든 세그먼트 끄기 lightNumber(10); //모든 숫자 끄기 digitalWrite(digit1, DIGIT_OFF); 디지털 쓰기(digit2, DIGIT_OFF); 디지털 쓰기(digit3, DIGIT_OFF); 디지털 쓰기(digit4, DIGIT_OFF); 디지털 쓰기(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} void displayNumber02(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //숫자 켜기 짧은 시간 동안 switch(digit) { 경우 1:lightNumber(10); 부서지다; 경우 2:digitalWrite(digit2, DIGIT_ON); //digitalWrite(segDP, LOW); 부서지다; 사례 3:digitalWrite(digit3, DIGIT_ON); 부서지다; 경우 4:digitalWrite(digit4, DIGIT_ON); 부서지다; 사례 5:digitalWrite(digit5, DIGIT_ON); 부서지다; 사례 6:digitalWrite(digit6, DIGIT_ON); 부서지다; } lightNumber(디스플레이 % 10); 표시하려면 // 10; 지연 마이크로초(DISPLAY_BRIGHTNESS); //모든 세그먼트 끄기 lightNumber(10); //모든 숫자 끄기 digitalWrite(digit1, DIGIT_OFF); 디지털 쓰기(digit2, DIGIT_OFF); 디지털 쓰기(digit3, DIGIT_OFF); 디지털 쓰기(digit4, DIGIT_OFF); 디지털 쓰기(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} void displayNumber03(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //숫자 켜기 짧은 시간 동안 switch(digit) { 경우 1:digitalWrite(digit1, DIGIT_ON); 부서지다; 경우 2:digitalWrite(digit2, DIGIT_ON); 부서지다; 사례 3:digitalWrite(digit3, DIGIT_ON); 부서지다; 경우 4:digitalWrite(digit4, DIGIT_ON); 부서지다; 사례 5:digitalWrite(digit5, DIGIT_ON); 부서지다; 사례 6:digitalWrite(digit6, DIGIT_ON); 부서지다; } lightNumber(디스플레이 % 10); 표시하려면 // 10; 지연 마이크로초(DISPLAY_BRIGHTNESS); //모든 세그먼트 끄기 lightNumber(10); //모든 숫자 끄기 digitalWrite(digit1, DIGIT_OFF); 디지털 쓰기(digit2, DIGIT_OFF); 디지털 쓰기(digit3, DIGIT_OFF); 디지털 쓰기(digit4, DIGIT_OFF); 디지털 쓰기(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} void displayNumber04(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //숫자 켜기 짧은 시간 동안 switch(digit) { 경우 1:lightNumber(10); 부서지다; 경우 2:digitalWrite(digit2, DIGIT_ON); 부서지다; 사례 3:digitalWrite(digit3, DIGIT_ON); 부서지다; 경우 4:digitalWrite(digit4, DIGIT_ON); 부서지다; 사례 5:digitalWrite(digit5, DIGIT_ON); 부서지다; 사례 6:digitalWrite(digit6, DIGIT_ON); 부서지다; } lightNumber(디스플레이 % 10); 표시하려면 // 10; 지연 마이크로초(DISPLAY_BRIGHTNESS); //모든 세그먼트 끄기 lightNumber(10); //모든 숫자 끄기 digitalWrite(digit1, DIGIT_OFF); 디지털 쓰기(digit2, DIGIT_OFF); 디지털 쓰기(digit3, DIGIT_OFF); 디지털 쓰기(digit4, DIGIT_OFF); 디지털 쓰기(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} void displayNumber05(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //숫자 켜기 짧은 시간 동안 switch(digit) { 경우 1:digitalWrite(digit1, DIGIT_ON); 부서지다; 경우 2:digitalWrite(digit2, DIGIT_ON); 부서지다; 사례 3:digitalWrite(digit3, DIGIT_ON); 부서지다; 경우 4:digitalWrite(digit4, DIGIT_ON); 부서지다; 사례 5:digitalWrite(digit5, DIGIT_ON); 부서지다; 사례 6:digitalWrite(digit6, DIGIT_ON); 부서지다; } lightNumber(디스플레이 % 10); 표시하려면 // 10; 지연 마이크로초(DISPLAY_BRIGHTNESS); //모든 세그먼트 끄기 lightNumber(10); //모든 숫자 끄기 digitalWrite(digit1, DIGIT_OFF); 디지털 쓰기(digit2, DIGIT_OFF); 디지털 쓰기(digit3, DIGIT_OFF); 디지털 쓰기(digit4, DIGIT_OFF); 디지털 쓰기(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} void displayNumber06(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //숫자 켜기 짧은 시간 동안 switch(digit) { case 1://digitalWrite(digit1, DIGIT_ON); 부서지다; 경우 2:digitalWrite(digit2, DIGIT_ON); 부서지다; 사례 3:digitalWrite(digit3, DIGIT_ON); 부서지다; 경우 4:digitalWrite(digit4, DIGIT_ON); 부서지다; 사례 5:digitalWrite(digit5, DIGIT_ON); 부서지다; 사례 6:digitalWrite(digit6, DIGIT_ON); 부서지다; } lightNumber(디스플레이 % 10); 표시하려면 // 10; 지연 마이크로초(DISPLAY_BRIGHTNESS); //모든 세그먼트 끄기 lightNumber(10); //모든 숫자 끄기 digitalWrite(digit1, DIGIT_OFF); 디지털 쓰기(digit2, DIGIT_OFF); 디지털 쓰기(digit3, DIGIT_OFF); 디지털 쓰기(digit4, DIGIT_OFF); 디지털 쓰기(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} // 숫자가 주어지면 해당 세그먼트를 켭니다//숫자 ==10이면 number를 끕니다. lightNumber(int numberToDisplay) {//Common Anode ********* ****************#define SEGMENT_ON HIGH#define SEGMENT_OFF LOW/* 공통 음극 ***************** #define SEGMENT_ON LOW # 정의 SEGMENT_OFF HIGH*/ switch (numberToDisplay){ case 0:digitalWrite(segA, SEGMENT_ON); 디지털 쓰기(segB, SEGMENT_ON); 디지털 쓰기(segC, SEGMENT_ON); 디지털 쓰기(segD, SEGMENT_ON); 디지털 쓰기(segE, SEGMENT_ON); 디지털 쓰기(segF, SEGMENT_ON); 디지털 쓰기(segG, SEGMENT_OFF); 부서지다; 사례 1:digitalWrite(segA, SEGMENT_OFF); 디지털 쓰기(segB, SEGMENT_ON); 디지털 쓰기(segC, SEGMENT_ON); 디지털 쓰기(segD, SEGMENT_OFF); 디지털 쓰기(segE, SEGMENT_OFF); 디지털 쓰기(segF, SEGMENT_OFF); 디지털 쓰기(segG, SEGMENT_OFF); 부서지다; 사례 2:digitalWrite(segA, SEGMENT_ON); 디지털 쓰기(segB, SEGMENT_ON); 디지털 쓰기(segC, SEGMENT_OFF); 디지털 쓰기(segD, SEGMENT_ON); 디지털 쓰기(segE, SEGMENT_ON); 디지털 쓰기(segF, SEGMENT_OFF); 디지털 쓰기(segG, SEGMENT_ON); 부서지다; 사례 3:digitalWrite(segA, SEGMENT_ON); 디지털 쓰기(segB, SEGMENT_ON); 디지털 쓰기(segC, SEGMENT_ON); 디지털 쓰기(segD, SEGMENT_ON); 디지털 쓰기(segE, SEGMENT_OFF); 디지털 쓰기(segF, SEGMENT_OFF); 디지털 쓰기(segG, SEGMENT_ON); 부서지다; 사례 4:digitalWrite(segA, SEGMENT_OFF); 디지털 쓰기(segB, SEGMENT_ON); 디지털 쓰기(segC, SEGMENT_ON); 디지털 쓰기(segD, SEGMENT_OFF); 디지털 쓰기(segE, SEGMENT_OFF); 디지털 쓰기(segF, SEGMENT_ON); 디지털 쓰기(segG, SEGMENT_ON); 부서지다; 사례 5:digitalWrite(segA, SEGMENT_ON); 디지털 쓰기(segB, SEGMENT_OFF); 디지털 쓰기(segC, SEGMENT_ON); 디지털 쓰기(segD, SEGMENT_ON); 디지털 쓰기(segE, SEGMENT_OFF); 디지털 쓰기(segF, SEGMENT_ON); 디지털 쓰기(segG, SEGMENT_ON); 부서지다; 사례 6:digitalWrite(segA, SEGMENT_ON); 디지털 쓰기(segB, SEGMENT_OFF); 디지털 쓰기(segC, SEGMENT_ON); 디지털 쓰기(segD, SEGMENT_ON); 디지털 쓰기(segE, SEGMENT_ON); 디지털 쓰기(segF, SEGMENT_ON); 디지털 쓰기(segG, SEGMENT_ON); 부서지다; 사례 7:digitalWrite(segA, SEGMENT_ON); 디지털 쓰기(segB, SEGMENT_ON); 디지털 쓰기(segC, SEGMENT_ON); 디지털 쓰기(segD, SEGMENT_OFF); 디지털 쓰기(segE, SEGMENT_OFF); 디지털 쓰기(segF, SEGMENT_OFF); 디지털 쓰기(segG, SEGMENT_OFF); 부서지다; 사례 8:digitalWrite(segA, SEGMENT_ON); 디지털 쓰기(segB, SEGMENT_ON); 디지털 쓰기(segC, SEGMENT_ON); 디지털 쓰기(segD, SEGMENT_ON); 디지털 쓰기(segE, SEGMENT_ON); 디지털 쓰기(segF, SEGMENT_ON); 디지털 쓰기(segG, SEGMENT_ON); 부서지다; 사례 9:digitalWrite(segA, SEGMENT_ON); 디지털 쓰기(segB, SEGMENT_ON); 디지털 쓰기(segC, SEGMENT_ON); 디지털 쓰기(segD, SEGMENT_ON); 디지털 쓰기(segE, SEGMENT_OFF); 디지털 쓰기(segF, SEGMENT_ON); 디지털 쓰기(segG, SEGMENT_ON); 부서지다; // 모든 세그먼트가 ON 케이스 10:digitalWrite(segA, SEGMENT_OFF); 디지털 쓰기(segB, SEGMENT_OFF); 디지털 쓰기(segC, SEGMENT_OFF); 디지털 쓰기(segD, SEGMENT_OFF); 디지털 쓰기(segE, SEGMENT_OFF); 디지털 쓰기(segF, SEGMENT_OFF); 디지털 쓰기(segG, SEGMENT_OFF); 부서지다; }// 코딩 끝, BUDHUSARANAI, 행운을 빕니다. }
제조공정
구성품 및 소모품 Arduino UNO × 1 Adafruit Standard LCD - 파란색 바탕에 16x2 흰색 × 1 SparkFun 푸시버튼 스위치 12mm × 4 저항 10k 옴 × 4 저항 221옴 음, 220옴... × 2 단일 회전 전위차계 - 100,000옴 × 1 부저 × 1 브레드보드(일반) × 1 점퍼 와이어(일반) × 1
구성품 및 소모품 Arduino UNO × 1 Adafruit Standard LCD - 파란색 바탕에 16x2 흰색 × 1 SparkFun 푸시버튼 스위치 12mm × 1 Perma-Proto 브레드보드 절반 크기 × 1 점퍼 와이어(일반) × 1 저항 1k 옴 × 1 저항 10k 옴 × 1 저항 470k ohm 1% × 3 저항 680옴 1% × 3