UI 흐름도
워테맨 자동급수 시스템은 다음과 같은 User Inteface 흐름으로 구성된다.
-파란색 박스모양은 각 단계별 화면에 표시되는 내용이고,
-붉은색 기호는 각각의 화면에서 해당 버튼을 눌렀을 때 연결되어야 하는 화면기능의 표시임
프로그램 코딩 샘플
6~18 line: 연결될 부품들에 대한 IO Pin 배정
19~35 line: 프로그램에서 사용할 전역 변수들
39~47 line: 펌프,LED등을 위한 핀들의 모드설정 및 초기값 지정
49~56 line: 초기모드 표시(LCD화면에 메세지 표시,LED 점멸)한 후 LCD화면 Clear
5 6line~ : EEPROM에 보관해 놓은 Data가 있을 경우 처리(Data보관시 1번지에 1로 표시해 놓고)
59~61line : 급수간격 Day(10번지),급수간격 Hour(12번지) 값을 읽어 급수간격을 초단위로 계산
67~71line: 대기중 비정상종료 인지 확인하여 복구하기 위한 Data
*** 메모리 입출력함수
EEPROM.read(x) : 메모리 x번지 읽기, EEPROM.write(x, y); 메모리x번지에 y값으로 쓰기
77 line: 대기중 비정상 종료된 경우 대기하기 기능으로 이동
78~86 line: 종합상황을 LCD화면에 표시하기
88 line : 키패드로 부터 1글자 입력 받기
89~106 line : 키패드 입력 문자에 따라 해당 기능 수행하기
109 line: 함수 호출 파라메터로 숫자모드인지 문자모드인지 구분을 전달받기
111 line : 키패드눌림상태 확인하여 읽기
113~118 line : 문자모드 일경우 입력된 문자가 메뉴선택용 문자인지 확인하여 맞으면 입력확인용
비프음 출력하고 복귀
119~123 line : 숫자모드 일경우 입력된 문자가 숫자인지 확인하여 맞으면 입력확인용 비프음
출력하고 복귀
130~133 line: LCD에 안내 문구 출력
135~157 line : 3개 숫자를 입력받아 첫 숫자는 대기일수, 뒤 두자리숫자는 대기시간으로 사용
136 line : 숫자모드로 키패드 입력받기
140, 144 line : 입력되는 숫자 첫번째와 세번째 일때 잘라서 사용하기
146~155 line: 시간단위가 24를 초과할 경우 다시 입력받기
159~165 line : 메모리에 보관하고 작업완료 비프음 출력
169~172 line: LCD에 안내 문구 출력
174~182 line : 3개 숫자를 입력받아 급수시간으로 사용
175 line : 숫자모드로 키패드 입력받기
179 line : i==2 즉 세번째 숫자가 입력되었을 때 입력된 세문자를 연결하여 숫자로 변환
183~190 line : 메모리에 보관하고 작업완료 비프음 출력
250 line: Ready 상태임을 메모리에 저장
253~256 line : Ready상태에서 비정상종료된 경우 잔여시간을 보돤되었던 시간으로 set
257 ~275 line : Delay타임 입력받기 ( 잔여시간 Counting을 바로 시작하는 것이 아니고 일정시간 이후부터 시작하기 )
276 line: 물통에 물이 있는지 확인하는 함수 호출
278 line~ : Ready상태 : 조건을 반복 check하며 급수할 것인지 여부 결정
279,280 line : 조건 Check하기 위한 온습도 값읽기
283 ~292 line : 타이머잔여시간이 0이고 온습도 조건이 맞으면 물주기 함수 호출
293 ~305 line : 잔여시간을 Day-Hour로 변환하여 LCD화면에 표시하기
306~311 line: 매 10분마다 현재 상태( 잔여시간)을 메모리에 저장해 놓기
312~322 line: Ready 상태에서 #버튼이 눌러지면 비프음 출력하고 Ready상태 종료하기
327~332 line: 비프음을 출력하고 펌프가동 함수 호출
336~339 line: LCD에 안내 문구 출력
342~349 line : 물통에 물이 있는지 확인한 후 펌프에 연결된 릴레이와 급수중 LED 가동
350 ~360 line : 급수잔여 시간을 계산하여 LCD표시하고 종료되면 loop를 빠져나와 복귀
378 line: 수위센서 VCC에 전원 공급하기
380 line: 수위센서 값 읽기
378 line: 수위센서 VCC에 전원 공급 중단하기
382~393 line : 저항값이 일정 수치 이상일 경우 물이 없다고 판정하여 비프음 출력 및 물없음LED로 사용자에게 알리고 복귀
'아두이노 피지컬컴퓨팅 키트 > 워터맨' 카테고리의 다른 글
(피지컬컴퓨팅키트) 워터맨 15.기기 조립하기 (0) | 2019.05.10 |
---|---|
(피지컬컴퓨팅키트) 워터맨 14.시스템 구성 (0) | 2019.05.08 |
(피지컬컴퓨팅키트) 워터맨 13.중간과제2 (1) | 2019.05.07 |
(피지컬컴퓨팅키트) 워터맨 12.릴레이 사용하기 (0) | 2019.05.03 |
(피지컬컴퓨팅키트) 워터맨 11.수위센서 사용하기 (0) | 2019.05.02 |