ATmega128_SmartFan

JS·2023년 3월 15일

Project

목록 보기
2/4
post-thumbnail

ATmega128의 Uart 통신을 이용하여 선풍기를 제어해보자

동작설명은 다음과 같다.
버튼을 이용하여 선풍기의 풍속을 총 3단계 까지 조절이 가능하며, ON, OFF 버튼을 이용하여 어느 단계에서든 선풍기를 종료되도록 했으며, 다시 ON할 경우, 종료했던 상태에서 다시 시작되도록 설계하였다.
또한 Uart 통신을 이용하여 시리얼 통신 프로그램 상에서도 버튼을 눌렀을 경우와 똑같이 동작하도록 기획했다.

이 상태를 나타낸 상태도는 다음과 같다.

위의 동작을 하기위해 사용할 프로그램과 하드웨어는 다음과 같다.

이를 코딩으로 구현하기 전에 펌웨어를 위한 SW Stack을 설계해보자

HW는 제어를 위한 버튼과 동작을 위한 모터를 사용하였으며, 이러한 하드웨어의 제어를 GPIO, UART를 이용하여 HW와 통신을 하였으며, Button과 Motor Driver를 이용하여 모터와 버튼의 동작을 위한 코딩을 하였다. Tick의 경우, 1milisec 간격으로 증가하여 이걸로 시간체크, 선풍기 동작시간 결정한다.
Listener는 Button의 입력과 Uart의 입력을 받는 역할을 한다. Model의 경우, 선풍기의 상태 값을 다른 다른 객체에 전달해준다.
Service는 선풍기의 동작과 LCD에 출력하는 동작을 정의해 주었으며, Presnter를 통해 모터 동작과 LCD가 출력하기 위한 함수를 넣어주었다.
가장 최상위의 apMain을 통해 모터, LCD, 버튼 등의 초기화와 실행을 선언해주었으며, 이를 Main함수를 통해 호출하였다.

이를 토대로 Class Diagram을 설계해보자

0개의 댓글