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로 사용자에게 알리고 복귀