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

Arduino 알람 시스템:SERENA

구성품 및 소모품

Arduino Mega 2560
× 1
3.2" TFT LCD 터치 스크린
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

나는 이전에 많은 경보 시스템을 보았고, 확인하고, 작동 방식을 보고, 나만의 경보 시스템을 만들고 싶다고 결정했습니다. 내 말은, 왜 안되지? 왜 무언가를 가져 와서 더 좋게 만들지 않습니까? 결국 저는 컴퓨터 엔지니어(학부생이지만 곧 바뀔 예정입니다)입니다.

그렇게 해서 이 프로젝트가 실현되었습니다.

나는 많은 시스템과 그들이 실제로 제공할 수 있는 것을 확인했고 알람의 제어판 역할을 할 단일 Arduino 보드에 이러한 모든 기능(및 일부 내 기능)을 넣는 것이 좋은 생각이라고 생각했습니다.

여기에 까다로운 것은 없습니다. 3.2인치 터치 스크린과 함께 보드 자체를 구입했습니다. 물론 화면을 작동시키려면 몇 가지 라이브러리가 필요했습니다. 모든 라이브러리에 대해 Henning Carlsen에게 큰 감사를 드립니다! 크레딧에 있는 그의 웹사이트 링크 섹션.

프로그램

이제 완료하는 데 시간이 좀 걸렸습니다. 코드를 혼동하지 마십시오. 필요할 때 항상 주석을 달겠습니다!

알람의 주요 기능

세 가지 다른 암호를 포함하기로 결정했습니다. 4자리, 5자리, 6자리입니다. 이것이 많다는 것을 알고 있지만 향후 업데이트에서 사용자에게 4자리 코드를 비활성화할 수 있는 옵션을 제공할 것입니다.

<울>
  • 4자리 패스는 알람을 작동시키는 데 사용됩니다.
  • <울>
  • 5자리 패스는 알람을 부분적으로 해제하는 데 사용됩니다.
  • <울>
  • 6자리 패스는 알람을 완전히 해제하는 데 사용됩니다.
  • 알람은 자동으로 작동할 수도 있습니다. 5자리 코드를 입력하면 프로그램이 카운트다운을 시작합니다(기본값 40초). 이 카운트다운이 끝나면 알람이 자동으로 활성화됩니다. 이것은 일반적으로 시스템을 준비하는 것을 잊었을 때 매우 유용할 수 있습니다.

    옵션 메뉴

    옵션 메뉴에서 세 가지 비밀번호와 자동 작동 시간을 모두 변경할 수 있습니다.

    향후 업데이트

    향후 업데이트에는 날짜/시간 설정, SD 카드 지원(정전이 있고 데이터 손실을 원하지 않는 경우), 자동 무장 비활성화 옵션, 4자리 패스 비활성화 옵션 등이 포함됩니다. .

    쇼케이스 비디오

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 세레나 v.1.01
  • SERENA v.1.01아두이노
    코드를 Arduino 보드에 업로드하기만 하면 됩니다.
    일부 의견은 그리스어로 되어 있으며 곧 변경될 예정입니다.
    ////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////SERENA 경보 시스템//저자:Michael Marinis//Copyright (C)2016 Michael Marinis. All Rights Reserved//웹사이트:http://www.youtube.com/SauRONmiKE////이것은 사용자에게 경보를 자동으로 작동시킬 수 있는 기능을 제공하는 2가지 기능의 경보 시스템인 SERENA 경보 시스템입니다. 또는 사용자가 원할 때 수동으로 무장합니다.////이 프로그램에는 Henning Karlsen의 UTFT 및 URTouch 라이브러리와 방패가 있는 호환 가능한 LCD//스크린이 필요합니다.////////////// 버전////////////0.10a:첫 번째 빌드, 기본 기능//0.20a:사소한 개선//0.30a:새 수동 암 암호에 대한 입력 및 확인 통과 완료(12/11 /2016)//0.40a:Pass 입력 및 새로운 Auto-Arm 비밀번호 확인 완료(12/11/2016)//1.00a:Arm 비밀번호 입력 및 확인 완료(12/11/2016, 19:16) //1.10a:시스템이 무장되었을 때 메뉴를 완료했습니다(릴레이나 다른 것에 신호를 보내지 않고). 시간과 날짜는 추후 추가될 예정입니다. Disarm 버튼만 추가됨(13/11/2016, 13:04)//1.20a:"DISARM" 버튼이 프로그래밍되었습니다. 5자리 비밀번호를 입력하라는 메시지가 표시됩니다. 알람을 해제하는 비밀번호 확인도 수행됩니다(릴레이 등으로 신호를 보내지 않음) (13/11/2016, 14:15)//1.21a:사용자가 숫자를 입력할 수 없는 문제 수정 비밀번호 확인 후. 사용자가 "아니오"를 누르면 "지우기" 버튼을 누를 때까지 새 암호를 입력할 수 없습니다. 이제 수정되었습니다(2016년 14월 11일, 13:32)//1.22a:자동 작동을 위한 카운트다운 타이머가 이제 완료되었습니다(2016년 14월 11일, 15:46)//1.30a:자동 작동 메뉴가 완성되었습니다. 자동 무장 메뉴는 팔이 다시 자동 무장되기까지 남은 시간(초)을 표시합니다. 전체 해제 메뉴는 라이브러리의 제한으로 인해 푸시 버튼을 통해 액세스할 수 있습니다(14/11/2016, 21:42)//1.31a:"buf" 변수를 "-1"에서 "0"으로 변경했습니다. 이것은 숫자 버튼을 처음 눌러도 아무 작업도 수행하지 않는 버그를 해결했습니다(16/11/2016, 00:45)//1.40b:사용자가 4를 수정할 수 있는 "SET ARM PASSWORD" 버튼 추가 -알람을 작동시키는 데 사용되는 숫자 비밀번호(16/11/2016, 14:33)//1.41b:"SET AUTO-ARM PASS"의 "BACK" 버튼이 이제 옵션 메뉴의 두 번째 페이지로 리디렉션됩니다. 첫 번째 대신 (16/11/2016, 16:21)//1.42b:세 번째 옵션 메뉴를 완료했습니다. "시간 설정" 및 "날짜 설정" 버튼이 포함되어 있습니다(16/11/2016, 16:37)//1.43b:해제 패스 입력의 지우기 버튼이 실제로 "자동 입력"을 재설정하지 않는 버그를 수정했습니다. array (17/11/2016, 00:05)//1.44b:"SET AUTO-ARM PASS" 버튼은 이제 첫 번째 옵션(18 /11/2016, 10:02)//변경 사항은 최종 버전 1.00까지 기록됩니다. 1.00 이후에는 SERENA_changelog.txt 파일에 변경 사항이 기록됩니다.//1.00:전체 무장 해제 기능의 설계. 이 기능을 사용하려면 6자리 암호가 필요하며 알람 프로그램의 기본 메뉴로 이동하라는 메시지가 표시됩니다. 버튼을 클릭할 때마다 부저가 들립니다(2017년 8월 1일, 20:53)//////////향후 버전//////////// *새 버전에 대한 아이디어 여기에 넣을 것입니다*//////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////#include #include UTFT myGLCD(ITDB32WC, 38, 39, 40, 41);URTouch myTouch(6, 5, 4, 3, 2);extern uint8_t SmallFont[];extern uint8_t BigFont[];extern uint8_t SevenSegNumFont[];int x;int y;int armpass[4] ={1, 2, 3, 4};int autopass[5] ={ 1, 2, 3, 4, 5};int manualpass[6] ={1, 1, 1, 1, 1, 1};int timeinput[4];int arminput[4];int autoinput[5];int manualinput[6];int autolength =0;int manuallength =0;int buzzerpin =8;int systarm =9;int serenapin =10;int buttonpin =13;int autoarmtime =40;int autoarmtimemem =autoarmtime;int 월 =1; int day =1;int year =2016;//사용자 정의 함수 무효 경보제목(){ myGLCD.setFont(SmallFont); myGLCD.setBackColor(0, 0, 0); myGLCD.clrScr(); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0); myGLCD.drawLine(0, 14, 319, 14); myGLCD.print("SERENA ALARM SYSTEM v.1.01", CENTER, 1);}void title()//간혹 이름을 원하지 않기 때문에 분리됨{ alarmtitle(); myGLCD.print("마이클 마리니스에 의해", 중앙, 30);}무효 drawbutton1(){ myGLCD.setColor(192, 192, 192); myGLCD.fillRoundRect(20, 60, 300, 100);}무효 drawbutton2(){ myGLCD.setColor(192, 192, 192); myGLCD.fillRoundRect(20, 120, 300, 160);}무효 drawdisarm(){ myGLCD.setColor(192, 192, 192); myGLCD.fillRoundRect(20, 180, 300, 220); myGLCD.setColor(0, 0, 0); myGLCD.setBackColor(192, 192, 192); myGLCD.setFont(BigFont); myGLCD.print("DISARM", CENTER, 193);}결점 무효(){ myGLCD.setColor(192, 192, 192); myGLCD.fillRoundRect(20, 180, 150, 210); myGLCD.setBackColor(192, 192, 192); myGLCD.setColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("뒤로", 70, 190);} void drawo(){ myGLCD.setColor(192, 192, 192); myGLCD.fillRoundRect(20, 180, 150, 210); myGLCD.setBackColor(192, 192, 192); myGLCD.setColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("아니요", 80, 190);}무효 drawyes(){ myGLCD.setColor(192, 192, 192); myGLCD.fillRoundRect(170, 180, 300, 210); myGLCD.setBackColor(192, 192, 192); myGLCD.setColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("예", 225, 190);} void drawnext(){ myGLCD.setColor(192, 192, 192); myGLCD.fillRoundRect(170, 180, 300, 210); myGLCD.setBackColor(192, 192, 192); myGLCD.setColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("NEXT", 220, 190);}드로버튼 무효화(){ myGLCD.clrScr(); 정수 z; myGLCD.setFont(SmallFont); (z =0, z <3, z++) { myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect(20 + (z * 60), 15, 60 + (z * 60), 55); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0); myGLCD.printNumI(z + 1, 37 + (z * 60), 30); } (z =0; z <3; z++) { myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect(20 + (z * 60), 70, 60 + (z * 60), 110); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0); myGLCD.printNumI(z + 4, 37 + (z * 60), 85); } (z =0; z <3; z++) { myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect(20 + (z * 60), 125, 60 + (z * 60), 165); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0); myGLCD.printNumI(z + 7, 37 + (z * 60), 140); } (z =0; z <3; z++) { myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect(190, 15 + (z * 55), 290, 55 + (z * 55)); } myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect(20, 175, 80, 205); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0); myGLCD.printNumI(0, 48, 185); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0); myGLCD.print("지우기", 221, 30); myGLCD.print("확인", 232, 85); myGLCD.print("뒤로", 225, 140);} 무효 optionsmenuend(){ myGLCD.clrScr(); myGLCD.setFont(SmallFont); myGLCD.setColor(255, 255, 255); myGLCD.drawLine(0, 14, 319, 14); myGLCD.setBackColor(255, 0, 0); 알람제목(); myGLCD.setFont(SmallFont); myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.print("옵션 메뉴", 중앙, 20); 그리기 버튼1(); 그리기 버튼2(); 약점(); myGLCD.setFont(SmallFont); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0);} 무효 옵션 메뉴(){ myGLCD.clrScr(); myGLCD.setFont(SmallFont); myGLCD.setColor(255, 255, 255); myGLCD.drawLine(0, 14, 319, 14); myGLCD.setBackColor(255, 0, 0); 알람제목(); myGLCD.setFont(SmallFont); myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.print("옵션 메뉴", 중앙, 20); 그리기 버튼1(); 그리기 버튼2(); 약점(); 그린 엑스트(); myGLCD.setFont(SmallFont); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0);}무효 drawoptions(){ myGLCD.setFont(BigFont); myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect(20, 70, 300, 120); myGLCD.setBackColor(255, 0, 0); myGLCD.setColor(255, 255, 255); myGLCD.print("OPTIONS", CENTER, 90);}무효 drawarm(){ myGLCD.setFont(BigFont); myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect(20, 140, 300, 190); myGLCD.setBackColor(255, 0, 0); myGLCD.setColor(255, 255, 255); myGLCD.print("ARM", CENTER, 160);} 무효 printmonth(int i){ myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(BigFont); if (i ==1) { myGLCD.print("1월", 95, 100); } if (i ==2) { myGLCD.print("2월", 95, 100); } if (i ==3) { myGLCD.print("3월", 95, 100); } if (i ==4) { myGLCD.print("4월", 95, 100); } if (i ==5) { myGLCD.print("MAY", 70, 100); } if (i ==6) { myGLCD.print("6월", 95, 100); } if (i ==7) { myGLCD.print("7월", 95, 100); } if (i ==8) { myGLCD.print("AUGUST", 95, 100); } if (i ==9) { myGLCD.print("9월", 95, 100); } if (i ==10) { myGLCD.print("10월", 95, 100); } if (i ==11) { myGLCD.print("NOVEMBER", 95, 100); } if (i ==12) { myGLCD.print("12월", 95, 100); }}//int updated(int d, int m, int y)//{// if (y % 4 ==0)//DISEKTO ETOS// {// if ((m>=0) &&(m <=13))// {// if (m ==1 || m ==3 || m ==5 || m ==7 || m ==8 || m ==10 || m ==12)// {// if ((d>=0) &&(d <=32))// {// if (d ==0)// {// d =31;// }// // if (d ==32)// {// d =1;// }// }// }// }// }//DISEKTO ETOS END//}int armupdate(int i, int armlength) { if (팔길이 <4) { if (팔길이 ==0) { arminput[0] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(arminput[0], 100, 185); //+35 gia kathe noumero meta digitalWrite(buzzerpin, HIGH); 지연(50); digitalWrite(부저핀, LOW); arminput[0] 반환; } if (팔길이 ==1) { arminput[1] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(arminput[1], 135, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); arminput[1]을 반환합니다. } if (팔길이 ==2) { arminput[2] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(arminput[2], 170, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); arminput[2] 반환; } if (팔길이 ==3) { arminput[3] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(arminput[3], 205, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); arminput[3]을 반환합니다. } }}int autoarmupdate(int i, int timelength){ if (timelength <5) { if (timelength ==1) { timeinput[0] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(시간입력[0], 100, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 시간 입력[0]; } if (시간 길이 ==2) { timeinput[1] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(시간입력[1], 135, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 시간 입력[1]; } if (시간 길이 ==3) { timeinput[2] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(timeinput[2], 170, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 시간 입력[2]; } if (시간 길이 ==4) { timeinput[3] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(timeinput[3], 205, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 시간 입력[3]; } }}int autoupdate(int i, int autolength){ if (autolength <5) { if (autolength ==0) { autoinput[0] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(자동입력[0], 100, 185); //+35 gia kathe noumero meta digitalWrite(buzzerpin, HIGH); 지연(50); digitalWrite(부저핀, LOW); 반환 자동 입력[0]; } if (자동 길이 ==1) { autoinput[1] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(자동입력[1], 135, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 자동 입력[1]; } if (자동 길이 ==2) { autoinput[2] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(자동입력[2], 170, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 자동 입력[2]; } if (자동 길이 ==3) { autoinput[3] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(자동입력[3], 205, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 자동 입력[3]; } if (자동 길이 ==4) { autoinput[4] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(자동입력[4], 240, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 자동 입력[4]; } if (자동 길이 ==5) { autoinput[5] =i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(자동입력[5], 275, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 자동 입력[5]; } }}int manualupdate(int i, int manuallength){ if (manuallength <6) { if (manuallength ==0) { manualinput[0] =i; //수동길이++; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(수동입력[0], 100, 185); //+35 gia kathe noumero meta digitalWrite(buzzerpin, HIGH); 지연(50); digitalWrite(부저핀, LOW); 반환 수동 입력[0]; } if (manuallength ==1) { manualinput[1] =i; //수동길이++; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(수동입력[1], 135, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 수동 입력[1]; } if (manuallength ==2) { manualinput[2] =i; //수동길이++; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(수동입력[2], 170, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 수동 입력[2]; } if (manuallength ==3) { manualinput[3] =i; //수동길이++; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(수동입력[3], 205, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 수동 입력[3]; } if (manuallength ==4) { manualinput[4] =i; //수동길이++; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(수동입력[4], 240, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 수동 입력[4]; } if (manuallength ==5) { manualinput[5] =i; //수동길이++; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(수동입력[5], 275, 185); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 반환 수동 입력[5]; } }} 무효 설정(){ myGLCD.InitLCD(); myGLCD.clrScr(); myTouch.InitTouch(); myTouch.setPrecision(PREC_EXTREME); 핀모드(부저핀, 출력); 핀모드(시스템, 출력); 핀모드(세레나핀, 출력); digitalWrite(부저핀, 높음); 지연(1000); digitalWrite(부저핀, LOW); 제목(); 드로옵션(); drawarm();} 무효 루프(){ while (true) {메인 메뉴:if (myTouch.dataAvailable()) { myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); //옵션 버튼 if ((x>=20) &&(x <=300) &&(y>=70) &&(y <=120)) {옵션:optionsmenu(); myGLCD.setBackColor(192, 192, 192); myGLCD.setColor(0, 0, 255); myGLCD.print("수동 팔 암호 설정", 중앙, 73); myGLCD.print("암 암호 설정", CENTER, 133); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); // 수동 비밀번호 설정 if ((x>=20) &&(x <=300) &&(y>=60) &&(y <=100)) { title(); myGLCD.setBackColor(0, 0, 0); myGLCD.setColor(255, 0, 0); myGLCD.print("6자리 비밀번호를 입력하세요.", 센터, 119); 약점(); 그린 엑스트(); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); if ((x>=20) &&(x <=150) &&(y>=180) &&(y <=210)) { digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 고토 옵션; } if ((x>=170) &&(x <=300) &&(y>=180) &&(y <=210)) //버튼 메뉴 { for (int o =0; o <6; o++) { 수동 입력[o] =0; } 통과 입력:int buf =0; myGLCD.setFont(SmallFont); myGLCD.setColor(255, 255, 255); myGLCD.drawLine(0, 14, 319, 14); myGLCD.setColor(255, 255, 255); 드로버튼(); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); myGLCD.setFont(SevenSegNumFont); myGLCD.setBackColor(0, 0, 0); // while(true) &drawbuttons (TICK!)를 위한 akolouthei while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); //버튼 1-3 if ((y>=15) &&(y <=55)) { if ((x>=20) &&(x <=60)) //1 { manualupdate(1, buf); 버프++; 지연(85); } if ((x>=80) &&(x <=120)) //2 { manualupdate(2, buf); 버프++; 지연(85); } if ((x>=140) &&(x <=180)) //3 { manualupdate(3, buf); 버프++; 지연(85); } }//버튼 1-3 END if ((y>=70) &&(y <=110)) //버튼 4-6 { if ((x>=20) &&(x <=60)) // 4 { 수동 업데이트(4, buf); 버프++; 지연(85); } if ((x>=80) &&(x <=120)) //5 { manualupdate(5, buf); 버프++; 지연(85); } if ((x>=140) &&(x <=180)) //6 { manualupdate(6, buf); 버프++; 지연(85); } }//버튼 4-6 END if ((y>=125) &&(y <=165)) //버튼 7-9 { if ((x>=20) &&(x <=60)) // 7 { 수동 업데이트(7, buf); 버프++; 지연(85); } if ((x>=80) &&(x <=120)) //8 { manualupdate(8, buf); 버프++; 지연(85); } if ((x>=140) &&(x <=180)) //9 { manualupdate(9, buf); 버프++; 지연(85); } }//버튼 7-9 END if ((x>=20) &&(x <=80) &&(y>=175) &&(y <=205)) //0 { manualupdate(0, buf); 버프++; 지연(85); } if ((x>=190) &&(x <=290) &&(y>=70) &&(y <=110)) //OK 버튼 { bool 플래그 =true; for (int t =0; t <6; t++) { if (manualinput[t] !=manualpass[t]) { 플래그 =거짓; } } if (flag ==true) //swstos kwdikos { for (int i =0; i <6; i++) { manualinput[i] =0; } myGLCD.clrScr(); myGLCD.setFont(BigFont); myGLCD.print("통과 확인!" , CENTER , 100); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); 지연(2000); 제목(); myGLCD.setBackColor(0, 0, 0); myGLCD.setColor(255, 0, 0); myGLCD.print("새 비밀번호를 입력하세요", 센터, 119); 약점(); 그린 엑스트(); while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); 정수 버퍼 =0; //EISAGWGH NEOU KWDIKOU if ((x>=170) &&(x <=300) &&(y>=180) &&(y <=210)) {newmanpassinput:myGLCD.setFont(SmallFont); myGLCD.setColor(255, 255, 255); myGLCD.drawLine(0, 14, 319, 14); myGLCD.setColor(255, 255, 255); 드로버튼(); digitalWrite(부저핀, 높음); 지연(50); digitalWrite(부저핀, LOW); myGLCD.setFont(SevenSegNumFont); myGLCD.setBackColor(0, 0, 0); while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x =myTouch.getX(); y =myTouch.getY(); //버튼 1-3 if ((y>=15) &&(y <=55)) { if ((x>=20) &&(x <=60)) //1 { manualupdate(1, buf); 버프++; 지연(85); } if ((x>=80) &&(x <=120)) //2 { manualupdate(2, buf); 버프++; 지연(85); } if ((x>=140) &&(x <=180)) //3 { manualupdate(3, buf); 버프++; 지연(85); } }//버튼 1-3 END if ((y>=70) &&(y <=110)) //버튼 4-6 { if ((x>=20) &&(x <=60)) // 4 { 수동 업데이트(4, buf); 버프++; 지연(85); } if ((x>=80) &&(x <=120)) //5 { manualupdate(5, buf); 버프++; 지연(85); } if ((x>=140) &&(x <=180)) //6 { manualupdate(6, buf); 버프++; 지연(85); } }//버튼 4-6 END if ((y>=125) &&(y <=165)) //버튼 7-9 { if ((x>=20) &&(x <=60)) // 7 { 수동 업데이트(7, buf); 버프++; 지연(85); } if ((x>=80) &&(x <=120)) //8 { manualupdate(8, buf); 버프++; 지연(85); } if ((x>=140) &&(x <=180)) //9 { manualupdate(9, buf); 버프++; 지연(85); } }//버튼 7-9 END if ((x>=20) &&(x <=80) &&(y>=175) &&(y <=205)) //0 { manualupdate(0, buf); 버프++; 지연(85); } // MPEI를 확인하려면 EDW. THA RWTAW AN O KWDIKOS EINAI ENTAKSEI(2 KOUMPIA, 예 &아니오). AN "예", TOTE THA EPISTREFEI STO ARXIKO MENOU, AN "NO" THA EPISTREFEI STHN EISAGWGH KWDIKOY if ((x>=190) &&(x <=290) &&(y>=70) &&(y <=110) )//새로운 패스 확인 버튼 { buf =0; myGLCD.clrScr(); title();...이 파일은 잘렸습니다. 전체 내용을 보려면 다운로드하십시오.

    제조공정

    1. 고장 방지 설계
    2. 움직임 감지 경보 시스템
    3. Arduino만 사용하는 DTMF 디코더
    4. Arduino를 사용한 자동 식물 관수 시스템
    5. 경보 시스템 보안 테스트
    6. 지하실/크롤 공간 환기 시스템
    7. Python3 및 Arduino 통신
    8. Arduino 및 Google 스프레드시트 기반 출석 시스템
    9. Arduino 기반 충돌 감지 경고 시스템
    10. DS1302 RTC가 있는 간단한 알람 시계