작동원리 0) 터치센서의 값을 읽는 구간이 진행중 초음파 센서를 통해 거리가 5cm이내 이면 서보 모터를 돌려 문을 잠그고 슬립모드를 실행하라. 슬립모드 해제 조건 : 버튼을 눌러야 된다. 작동원리 1) 터치센서의 값을 읽는 구간이 시작할 때 버튼을 누르고 있으면 키값을 설정하는 set으로 구간이 진행된다 1> 터치 센서를 누르면 아두이노가 지금까지 작동한 시간을 배열에 저장. datatime[] 2> 다음 터치 센서의 INPUT이 들어오면 작동 시간을 배열에 저장 3> 1번2번에서 받은 아두이노 작동 시간의 차이를 구해 배열에 저장 t_gap[] 4> 반복해서 t_gap[]을 채운다 5> 한 구간이 종료되면 시간 차이의 배열을 키 값에 저장 key[] 작동원리 2) 터치센서의 값을 읽는 구간이 시작할 때 버튼의 입력이 없으면 키 값과 지금 시작하는 구간의 t_gap[]을 비교해서 오차범위 내로 들어 올 시, 서보 모터를 작동시킨다. 1> 터치 센서를 누르면 아두이노가 지금까지 작동한 시간을 배열에 저장. datatime[] 2> 다음 터치 센서의 INPUT이 들어오면 작동 시간을 배열에 저장 3> 1번2번에서 받은 아두이노 작동 시간의 차이를 구해 배열에 저장 t_gap[] 4> 반복해서 t_gap[]을 채운다. 5> 한 구간이 종료시 키값과 t_gap[] 배열의 내용들을 비교(서로의 값을 빼본다), 차이가 200ms 이내이면 배열의 모든 값이 오차 범위 이내 이면 서보 모터를 실행시킨다. < 준비물 연결하기 > 터치센서 out - 디지털8번 / vcc - 3.3v / GND - GND 초음파 센 GND - GND / Echo - 디지털 5번 / Trig - 디지털 6번 / Vcc - 5.5v 푸시버튼 한줄 - 디지털2번 + 저항과 연결 - GND / 다른 한 줄 - 3.3v 서브모터 주황색 - 디지털 7번 / 빨간색 - 5v / 갈색 - GND STEP 2. 프로그램 코딩 구성함수 Setup Loop Sleep // 슬립모드로 들어가 주는 함수 Wakeup // 슬립모드 해제시 시리얼 모니터에 "슬립모드 해제"를 print해준다 Setting // 버튼을 누르고 있으면 key값을 설정하는 구간으로, 버튼을 누르지 않는 상태이면 key값과 비교하여 모터를 돌리는 구간으로 Wakeset // 터치된 시간을 받아 터치 시간들의 사이 값을 받아서 키값으로 설정해라 void wake_check() // 터치된 시간을 받아 터치 시간들의 사이 값을 받아서 키값과 비교 후 맞으면 모터를 실행하 void data_time() // 터치된 시간을 받아 배열로 저장해라 datatime[] void time_gap() //사잇값을 구해 배열에 저장하라 void key_set() //time_gap()함수에서 얻은 t_gap[]배열을 key[]배열에 저장하고 t_gap()함수는 다음에 사용하기 위해 초기화 하라 void key_check() //time_gap()함수에서 얻은 t_gap[]배열을 기존에 만들어 둔 key[]배열의 값과 비교하여 같으면 모터를 돌리고, 틀리면 오류를 출력하라 void closedoar() // 초음파 센서로부터 거리가 5cm 이내이면 문을 잠그기 위해 모터를 돌리고 슬립모드로 들어간다. void servomotor() //서보모터를 180도 씩 돌리고, 180보다 크게 되면 다시 0도로 돌아온다, 즉 한번 돌리면 문이 잠기고 다시 한번 돌리면 반대로 모터를 돌려서 문을 개방한다.