제조공정
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
안녕하세요 여러분 이번 프로젝트에서는 아두이노 UNO 보드로 간단한 알람시계를 만들어 보겠습니다. 이 프로젝트는 내가 이전에 사용한 여러 모듈을 혼합한 것입니다. 무언가에 갇힌 경우 웹사이트에서 모듈 튜토리얼을 확인할 수 있습니다. 왜냐하면 그것이 제가 일반적으로 작업하는 방식이기 때문입니다. 개별 작업을 수행한 다음 믹싱을 시작합니다. :D
이 프로젝트에는 다음이 필요합니다.
<울>뭔가 막힌 경우 위의 모듈에 대한 이전 자습서를 확인할 수 있습니다.
키패드 + Arduino + LCD로 DS1302 RTC 모듈을 설정하는 방법
Arduino 보드와 LCD 화면과 함께 DS1302 RTC 모듈을 간단하게 사용하는 방법
Arduino LCD I2C 간편 사용 및 직렬 모니터에서 직접 쓰기Arduino LCD I2C 간편 사용 및 직렬 모니터에서 직접 쓰기
Arduino uno + 4×4 키패드 매트릭스 + LCD i2c 화면
Arduino에서 버저/피에조 스피커를 사용하는 방법
배선:
라이브러리 및 코드:
LCD i2c 라이브러리 선택하거나 직접 다운로드할 수 있습니다.
키패드 라이브러리 또는 Arduino IDE에서 다운로드할 수 있습니다.
RTC DS1302 virtuabotix 라이브러리
코드:
코드 다운로드
코드 기능은 매우 간단합니다. 모듈을 배선한 후 "*"를 눌러 DS1302 RTC에서 시간과 날짜를 설정할 수 있습니다. 알람을 설정하려면 "A"를 누르고 디스플레이에 현재 날짜와 시간이 표시됩니다. 당신은 시간과 분을 설정할 수 있으며 시간 전에 "B"를 누르거나 벨이 울릴 때 아무 버튼이나 누르면 비활성화 할 수 있습니다.
당신이 그것을 좋아하기를 바랍니다. 어떤 문제가 있으면 저에게 연락할 수 있습니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">//이 코드는 DS1302 RTC 모듈 + 4*4 키패드 + LCD i2c + Arduino + Buzzer와 함께 사용합니다.//모듈을 배선한 후 LCD는 기본 날짜와 시간 또는 이전에 설정된 시간 표시//이 프로젝트의 목적은 키패드에서 RTC 모듈을 설정할 수 있고 저장된 상태로 유지되는지 확인하는 것입니다. 알람.//자세한 내용은 Surtrtech.com 또는 SurtrTech youtube 채널 참조#include섹션>//필요한 라이브러리#include #include #include #define I2C_ADDR 0x27 //LCD i2c 재료#define BACKLIGHT_PIN 3#define En_pin 2#define Rw_pin 1#define Rs_pin 0#define D4_pin 4#define D5_pin 5#define D6_pin 6#define D7_pin tal_I2Cry ,D5_pin,D6_pin,D7_pin);virtuabotixRTC myRTC(2, 3, 4); //RTC의 배선(CLK,DAT,RST) //배선을 변경하면 여기에서도 핀을 변경합니다. const byte numRows=4; // 키패드의 행 수const byte numCols=4; //키패드의 열 수//keymap은 키패드에 표시된 대로 행과 열에 따라 누르는 키를 정의합니다char keymap[numRows][numCols]={{'1', '2', '3', ' A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'},{'*', '0', ' #', 'D'}};바이트 rowPins[numRows] ={12,11,10,9}; //0~3행 //핀을 수정했다면 이 toobyte도 수정해야 합니다. colPins[numCols]={8,7,6,5}; //0~3열 int i1,i2,i3,i4;char c1,c2,c3,c4;char keypressed,keypressedx;int A_hour=NULL;int A_minute=NULL;int AlarmIsActive=NULL;int Buzzer =13;Keypad myKeypad =키패드(makeKeymap(키맵), rowPins, colPins, numRows, numCols); 무효 설정() { Serial.begin(9600); lcd.begin(16,2); //LCD 초기화 lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.set백라이트(높음); lcd.home(); }void loop() { while(keypressed ==NO_KEY){ //키를 누르지 않는 한 날짜와 시간이 계속 표시되므로 숫자가 혼동되지 않도록 매번 화면을 지워야 합니다 // 그리고 화면이 올바르게 표시되도록 약간의 지연을 추가해야 합니다. 그렇지 않으면 작동하지 않습니다. keypressed =myKeypad.getKey(); lcd.clear(); //여기서 LCD를 지운 후 모듈에서 시간을 가져와 일반적인 LCD 기능을 사용하여 화면에 인쇄합니다. myRTC.updateTime(); if(myRTC.hours==A_hour &&myRTC.minutes==A_minute &&AlarmIsActive==1 &&myRTC.seconds>=0 &&myRTC.seconds <=2){ while(keypressedx ==NO_KEY){ 톤(부저, 1000); //톤을 수정하거나 사운드를 직접 만들 수 있습니다. delay(100); 톤(부저, 2000); 지연(100); lcd.clear(); lcd.print("일어나세요!!!"); //알람이 울릴 때 표시할 메시지 keypressedx =myKeypad.getKey(); } } keypressedx =NO_KEY; 노톤(부저); lcd.setCursor(0,0); lcd.print(myRTC.dayofmonth); lcd.print("/"); lcd.print(myRTC.month); lcd.print("/"); lcd.print(myRTC.year); lcd.setCursor(0,1); lcd.print(myRTC.시간); lcd.print(":"); lcd.print(myRTC.분); lcd.print(":"); lcd.print(myRTC.seconds); 지연(100); } if (keypressed =='*') //누른 키를 확인할 때마다 "*"를 누를 때만 설정을 진행합니다. { lcd.clear(); lcd.print("설정"); 지연(1000); lcd.clear(); lcd.print("설정 연도"); //이것이 어떻게 작동하는지 이해할 수 있도록 먼저 "setup"을 표시한 다음 "setup year"를 인쇄하고 이제 일반적으로 연도를 쓸 수 있습니다(2-0-1-8) //자동으로 설정을 설정합니다. 월...끝날 때까지 //키패드의 키는 모두 chars(c)로 간주되므로 int로 변환해야 합니다. 그렇게 한 다음 저장합니다(i) //수학을 수행하고 연도를 구합니다. month... int로 RTC에 주입할 수 있으므로 그렇지 않으면 컴파일되지 않습니다 //4월과 같은 달은 3월에 대해 04, 03을 작성해야 합니다... 그렇지 않으면 다음 매개변수로 전달되지 않습니다 //The RTC virtuabotix 라이브러리는 이미 이상한 시간과 날짜를 허용하지 않도록 설정되어 있습니다(45/17/1990)(58:90:70). 예, 오래된 날짜는 오류로 간주됩니다. char keypressed2 =myKeypad.waitForKey(); if (keypressed2 !=NO_KEY &&keypressed2 !='*' &&keypressed2 !='#' &&keypressed2 !='A' &&keypressed2 !='B' &&keypressed2 !='C' &&keypressed2 !='D' ) { c1 =키 누름2; lcd.setCursor(0, 1); lcd.print(c1); } 문자 keypressed3 =myKeypad.waitForKey(); if (keypressed3 !=NO_KEY &&keypressed3 !='*' &&keypressed3 !='#' &&keypressed3 !='A' &&keypressed3 !='B' &&keypressed3 !='C' &&keypressed3 !='D' ) { c2 =키 누름3; lcd.setCursor(1, 1); lcd.print(c2); } char keypressed4 =myKeypad.waitForKey(); if (keypressed4 !=NO_KEY &&keypressed4 !='*' &&keypressed4 !='#' &&keypressed4 !='A' &&keypressed4 !='B' &&keypressed4 !='C' &&keypressed4 !='D' ) { c3 =키 누름4; lcd.setCursor(2, 1); lcd.print(c3); } char keypressed5 =myKeypad.waitForKey(); if (keypressed5 !=NO_KEY &&keypressed5 !='*' &&keypressed5 !='#' &&keypressed5 !='A' &&keypressed5 !='B' &&keypressed5 !='C' &&keypressed5 !='D' ) { c4 =키 누름5; lcd.setCursor(3, 1); lcd.print(c4); } i1=(c1-48)*1000; //누른 키는 문자에 저장됩니다. int로 변환한 다음 곱셈을 수행하여 코드를 int of xxxx i2=(c2-48)*100; i3=(c3-48)*10; i4=c4-48; 정수 N_년=i1+i2+i3+i4; 지연(500); lcd.clear(); lcd.print("설정 월");//////////////////////////////////////// //////////////////////// char keypressed6 =myKeypad.waitForKey(); // 여기에서 모든 프로그램은 4자리를 입력할 때까지 중지된 다음 위의 코드와 비교됩니다. if (keypressed6 !=NO_KEY &&keypressed6 !='*' &&keypressed6 !='#' &&keypressed6 !='A' &&keypressed6 !='B' &&keypressed6 !='C' &&keypressed6 !='D' ) { c1 =keypressed6; lcd.setCursor(0, 1); lcd.print(c1); } 문자 keypressed7 =myKeypad.waitForKey(); if (keypressed7 !=NO_KEY &&keypressed7 !='*' &&keypressed7 !='#' &&keypressed7 !='A' &&keypressed7 !='B' &&keypressed7 !='C' &&keypressed7 !='D' ) { c2 =키 누름7; lcd.setCursor(1, 1); lcd.print(c2); } i1=(c1-48)*10; i2=c2-48; int N_month=i1+i2; 지연(500); lcd.clear(); lcd.print("설정일"); ////////////////////////////////////////////////////// ////////////// 문자 keypressed8 =myKeypad.waitForKey(); // 여기서 모든 프로그램은 4자리 숫자를 입력할 때까지 중지된 다음 위의 코드와 비교됩니다. if (keypressed8 !=NO_KEY &&keypressed8 !='*' &&keypressed8 !='#' &&keypressed8 !='A' &&keypressed8 !='B' &&keypressed8 !='C' &&keypressed8 !='D' ) { c1 =keypressed8; lcd.setCursor(0, 1); lcd.print(c1); } char keypressed9 =myKeypad.waitForKey(); if (keypressed9 !=NO_KEY &&keypressed9 !='*' &&keypressed9 !='#' &&keypressed9 !='A' &&keypressed9 !='B' &&keypressed9 !='C' &&keypressed9 !='D' ) { c2 =키 누름9; lcd.setCursor(1, 1); lcd.print(c2); } i1=(c1-48)*10; i2=c2-48; 정수 N_day=i1+i2; 지연(500); lcd.clear(); lcd.print("설정 시간");//////////////////////////////////////// /////////////////////////////////////////////:char keypressed10 =myKeypad. 대기 키(); // 여기서 모든 프로그램은 4자리 숫자를 입력할 때까지 중지된 다음 위의 코드와 비교됩니다. if (keypressed10 !=NO_KEY &&keypressed10 !='*' &&keypressed10 !='#' &&keypressed10 !='A' &&keypressed10 !='B' &&keypressed10 !='C' &&keypressed10 !='D' ) { c1 =keypressed10; lcd.setCursor(0, 1); lcd.print(c1); } 문자 keypressed11 =myKeypad.waitForKey(); if (keypressed11 !=NO_KEY &&keypressed11 !='*' &&keypressed11 !='#' &&keypressed11 !='A' &&keypressed11 !='B' &&keypressed11 !='C' &&keypressed11 !='D' ) { c2 =키 누름11; lcd.setCursor(1, 1); lcd.print(c2); } i1=(c1-48)*10; i2=c2-48; 정수 N_시간=i1+i2; 지연(500); lcd.clear(); lcd.print("설정 시간");//////////////////////////////////////// ////////////////////////////////////////////:char keypressed12 =myKeypad. 대기 키(); // 여기서 모든 프로그램은 4자리 숫자를 입력할 때까지 중지된 다음 위의 코드와 비교됩니다. if (keypressed12 !=NO_KEY &&keypressed12 !='*' &&keypressed12 !='#' &&keypressed12 !='A' &&keypressed12 !='B' &&keypressed12 !='C' &&keypressed12 !='D' ) { c1 =keypressed12; lcd.setCursor(0, 1); lcd.print(c1); } 문자 keypressed13 =myKeypad.waitForKey(); if (keypressed13 !=NO_KEY &&keypressed13 !='*' &&keypressed13 !='#' &&keypressed13 !='A' &&keypressed13 !='B' &&keypressed13 !='C' &&keypressed13 !='D' ) { c2 =키 누름13; lcd.setCursor(1, 1); lcd.print(c2); } i1=(c1-48)*10; i2=c2-48; int N_분=i1+i2; 지연(500); lcd.clear(); myRTC.setDS1302Time(22, N_분, N_시간, 1, N_일, N_월, N_년); // RTC 모듈에 값으로 전송하는 날짜와 시간 설정이 완료되면 // 22는 초를 나타냅니다. 원하는 경우 설정을 추가할 수도 있습니다. // 1은 다음과 같이 요일을 나타냅니다. 오랫동안 화면에 표시하지 않습니다. 변경하지 않습니다. keypressed=NO_KEY; // "*" 키는 "keypressed"에 저장되므로 해당 값을 제거합니다. 그렇지 않으면 설정에 다시 들어가게 됩니다. }///////////////////// //////////////////////알람 설정//////////////////////////// ////// if (keypressed =='A'){ lcd.clear(); lcd.print(" 알람 설정 "); 지연(1000); lcd.clear(); lcd.print("알람 시간 설정"); char keypressed14 =myKeypad.waitForKey(); // 여기에서 모든 프로그램은 4자리 숫자를 입력할 때까지 중지된 다음 위의 코드와 비교됩니다. if (keypressed14 !=NO_KEY &&keypressed14 !='*' &&keypressed14 !='#' &&keypressed14 !='A' &&keypressed14 !='B' &&keypressed14 !='C' &&keypressed14 !='D' ) { c1 =keypressed14; lcd.setCursor(0, 1); lcd.print(c1); } 문자 keypressed15 =myKeypad.waitForKey(); if (keypressed15 !=NO_KEY &&keypressed15 !='*' &&keypressed15 !='#' &&keypressed15 !='A' &&keypressed15 !='B' &&keypressed15 !='C' &&keypressed15 !='D' ) { c2 =keypressed15; lcd.setCursor(1, 1); lcd.print(c2); } i1=(c1-48)*10; i2=c2-48; A_시간=i1+i2; 지연(500); lcd.clear(); lcd.print("알람 분 설정"); char keypressed16 =myKeypad.waitForKey(); // 여기서 모든 프로그램은 4자리 숫자를 입력할 때까지 중지된 다음 위의 코드와 비교됩니다. if (keypressed16 !=NO_KEY &&keypressed16 !='*' &&keypressed16 !='#' &&keypressed16 !='A' &&keypressed16 !='B' &&keypressed16 !='C' &&keypressed16 !='D' ) { c1 =keypressed16; lcd.setCursor(0, 1); lcd.print(c1); } 문자 keypressed17 =myKeypad.waitForKey(); if (keypressed17 !=NO_KEY &&keypressed17 !='*' &&keypressed17 !='#' &&keypressed17 !='A' &&keypressed17 !='B' &&keypressed17 !='C' &&keypressed17 !='D' ) { c2 =키 누름17; lcd.setCursor(1, 1); lcd.print(c2); } i1=(c1-48)*10; i2=c2-48; A_분=i1+i2; 지연(500); lcd.clear(); 알람IsActive=1; 키 누름 =NO_KEY; } if (keypressed =='B') { lcd.clear(); lcd.print("알람 비활성화"); 알람IsActive=0; 키 누름 =NO_KEY; 지연(500); } else { myRTC.updateTime(); 키 누름 =NO_KEY; } }
제조공정
구성품 및 소모품 Arduino UNO × 1 DHT11 온도 및 습도 센서(4핀) × 1 Adafruit RGB 백라이트 LCD - 16x2 × 1 저항 10k 옴 × 1 파워 뱅크 × 1 SparkFun 푸시버튼 스위치 12mm × 1 USB-A-B 케이블 × 1 점퍼 와이어(일반) × 1 브레드보드(일반) × 1 이 프로젝트 정보
이 프로젝트에서는 Arduino 터치 스크린 MP3 음악 플레이어와 알람 시계를 만드는 방법을 보여 드리겠습니다. 다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다. 개요 홈 화면에는 큰 시계, 날짜 및 온도 정보, 뮤직 플레이어 및 알람 시계용 버튼 2개가 있습니다. 뮤직 플레이어에 들어가면 화면 중앙에 있는 큰 재생 버튼을 눌러 음악 재생을 시작할 수 있습니다. 바로 옆에는 이전 또는 다음 곡을 재생할 수 있는 두 개의 버튼이 더 있습니다. 이 버튼 위에는 노래 진행률 표시줄이 있고 화면 하단에는 볼